前言:重用共同的功能,减少代码量。
方式:
1.APIView
class ProcessList(APIView): """ 列出所有process,或者创建一个新的process """ def get(self, request, format=None): process = Process.objects.all() serializer = ProcessSerializer(process, many=True) return Response(serializer.data) def post(self, request, format=None): serializer = ProcessSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) class ProcessDetail(APIView): """ 查找、更新或删除process """ def get_object(self, pk): try: return Process.objects.get(pk=pk) except Process.DoesNotExist: raise Http404 def get(self, request, pk, format=None): process = self.get_object(pk) serializer = ProcessSerializer(process) return Response(serializer.data) def delete(self, request, pk, format=None): process = self.get_object(pk) process.delete() return Response(status=status.HTTP_204_NO_CONTENT)2.mixins.ListModelMixin等 + GenericAPIView
class ProcessList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): """ ListModelMixin提供list()方法 CreateModelMixin提供create()方法 GenericAPIView """ queryset = Process.objects.all() serializer_class = ProcessSerializer def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) class ProcessDetail(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView): """ RetrieveModelMixin提供了retrieve()方法 UpdateModelMixin提供了update()方法 DestroyModelMixin提供了delete()方法 GenericAPIView """ queryset = Process.objects.all() serializer_class = ProcessSerializer def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs)3.generics.ListCreateAPIView等
class ProcessList(generics.ListCreateAPIView): queryset = Process.objects.all() serializer_class = ProcessSerializer class ProcessDetail(generics.RetrieveUpdateDestroyAPIView): queryset = Process.objects.all() serializer_class = ProcessSerializer需要导入模块:
from .serializers import ProcessSerializer from rest_framework.response import Response from rest_framework import status from rest_framework.decorators import api_view from rest_framework.views import APIView from rest_framework import mixins from rest_framework import generics
Class-based Views | DRF
猜你喜欢
转载自www.cnblogs.com/pymkl/p/10571747.html
今日推荐
周排行