mirror of
https://github.com/hequan2017/seal.git
synced 2026-04-25 03:01:10 +08:00
0.2 增加 API 例子
This commit is contained in:
@@ -3,11 +3,11 @@ from django.db import models
|
||||
|
||||
class Ecs(models.Model):
|
||||
TYPE_CHOICES = (
|
||||
('0', '阿里云'),
|
||||
('1', '腾讯云'),
|
||||
('2', '华为云'),
|
||||
('3', '亚马逊'),
|
||||
('4', '其他'),
|
||||
('阿里云', '阿里云'),
|
||||
('腾讯云', '腾讯云'),
|
||||
('华为云', '华为云'),
|
||||
('亚马逊', '亚马逊'),
|
||||
('其他', '其他'),
|
||||
)
|
||||
hostname = models.CharField(max_length=96, verbose_name='主机名', blank=True, null=True, )
|
||||
type = models.CharField(choices=TYPE_CHOICES, max_length=16, verbose_name='主机类型')
|
||||
|
||||
8
assets/serializers.py
Normal file
8
assets/serializers.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from rest_framework import serializers
|
||||
from assets.models import Ecs
|
||||
|
||||
|
||||
class EcsSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Ecs
|
||||
fields = '__all__'
|
||||
@@ -9,4 +9,8 @@ urlpatterns = [
|
||||
path('ecs-update-<int:pk>', views.EcsUpdateView.as_view(), name='ecs-update'),
|
||||
path('ecs-detail-<int:pk>', views.EcsDetailView.as_view(), name='ecs-detail'),
|
||||
path('ecs-delete', views.EcsDeleteView.as_view(), name='ecs-delete'),
|
||||
|
||||
|
||||
path('api/ecs', views.ApiEcsList.as_view()),
|
||||
path('api/ecs/<int:pk>', views.ApiEcsDetail.as_view()),
|
||||
]
|
||||
|
||||
@@ -11,6 +11,15 @@ from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMix
|
||||
from django.views.generic import ListView, View, DetailView, CreateView, UpdateView
|
||||
from assets.models import Ecs
|
||||
from assets.form import EcsForm
|
||||
from assets.serializers import EcsSerializer
|
||||
from rest_framework import permissions
|
||||
from rest_framework import generics
|
||||
from rest_framework.authentication import TokenAuthentication
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework import filters
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
|
||||
logger = logging.getLogger('assets')
|
||||
|
||||
@@ -26,7 +35,6 @@ class EcsCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
|
||||
template_name = 'assets/ecs-create.html'
|
||||
success_url = reverse_lazy('assets:ecs-list')
|
||||
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = {}
|
||||
if '__next__' in self.request.POST: # 为了获取 点击本页之前的 浏览网页
|
||||
@@ -42,7 +50,7 @@ class EcsCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
|
||||
def get_success_url(self):
|
||||
return self.request.POST['__next__']
|
||||
|
||||
def form_valid(self, form): ## 保存结果 可以进行 手动 修改 再保存
|
||||
def form_valid(self, form): # 保存结果 可以进行 手动 修改 再保存
|
||||
obj = form.save(commit=False)
|
||||
obj.save()
|
||||
return super().form_valid(form)
|
||||
@@ -53,8 +61,6 @@ class EcsCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
|
||||
return self.render_to_response(self.get_context_data(form=form))
|
||||
|
||||
|
||||
|
||||
|
||||
class EcsListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
permission_required = ('assets.view_ecs',)
|
||||
template_name = 'assets/ecs-list.html'
|
||||
@@ -73,14 +79,13 @@ class EcsListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
context = {
|
||||
"ecs_list": ecs_list,
|
||||
'ecs_count': self.queryset.count() if self.queryset != '' else 0,
|
||||
"filter_dict":self.filter_dict ## 把查询条件返回给前端
|
||||
"filter_dict": self.filter_dict # 把查询条件返回给前端
|
||||
}
|
||||
|
||||
kwargs.update(context)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
|
||||
class EcsUpdateView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
||||
"""
|
||||
Ecs 更新
|
||||
@@ -117,13 +122,12 @@ class EcsDetailView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
||||
pk = self.kwargs.get(self.pk_url_kwarg, None)
|
||||
context = {
|
||||
"ecs": self.model.objects.get(id=pk),
|
||||
"nid":pk
|
||||
"nid": pk
|
||||
}
|
||||
kwargs.update(context)
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
|
||||
class EcsDeleteView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
"""
|
||||
Ecs 删除
|
||||
@@ -135,4 +139,20 @@ class EcsDeleteView(LoginRequiredMixin, PermissionRequiredMixin, View):
|
||||
ret = {'status': True, 'error': None, }
|
||||
nid = self.request.POST.get('nid', None)
|
||||
self.model.objects.get(id=nid).delete()
|
||||
return HttpResponse(json.dumps(ret))
|
||||
return HttpResponse(json.dumps(ret))
|
||||
|
||||
|
||||
# Ecs Api drf 中文文档 http://drf.jiuyou.info/#/drf/requests
|
||||
class ApiEcsList(generics.ListCreateAPIView):
|
||||
queryset = Ecs.objects.get_queryset().order_by('id')
|
||||
serializer_class = EcsSerializer
|
||||
filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
|
||||
filter_fields = ('id', 'hostname', 'type', 'instance_id')
|
||||
search_fields = ('id', 'hostname',)
|
||||
permission_classes = (permissions.DjangoModelPermissions,) # 继承 django的权限
|
||||
|
||||
|
||||
class ApiEcsDetail(generics.RetrieveUpdateDestroyAPIView):
|
||||
queryset = Ecs.objects.get_queryset().order_by('id')
|
||||
serializer_class = EcsSerializer
|
||||
permission_classes = (permissions.DjangoModelPermissions,)
|
||||
|
||||
Reference in New Issue
Block a user