Django drf 보기

2360 단어
원래
class Page1View(View):
  pass

지금
class Page1View(APIView)
  pass

GenericAPIView(및 APIView)는 차이가 거의 없습니다.
from rest_framework.generics import GenericAPIView

class View1View(GenericAPIView):
    queryset = models.Role.objects.all()
    serializer_class = PagerSerializers
    pagination_class = MyPageNumberPagination
    def get(self, request, *args, **kwargs):
        #     
        roles = self.get_queryset()

        # [1, 1000] [1,10]
        pager_roles = self.paginate_queryset(roles)

        #    
        ser = self.get_serializer(instance=pager_roles, many=True)

        return Response(ser.data)

GenericViewSet(라우팅 시스템이 변경됨)
re_path(r'^(?P[v1|v2]+)/v1/', views.View1View.as_view({'get': 'get'})),
from rest_framework.viewsets import GenericViewSet

class View1View(GenericViewSet):

    queryset = models.Role.objects.all()
    serializer_class = PagerSerializers
    pagination_class = MyPageNumberPagination
    def get(self, request, *args, **kwargs):
        #     
        roles = self.get_queryset()

        # [1, 1000] [1,10]
        pager_roles = self.paginate_queryset(roles)

        #    
        ser = self.get_serializer(instance=pager_roles, many=True)

        return Response(ser.data)

ModelViewSet(라우팅 시스템이 변경됨)
이런 종류의 내부는 이미 간단한 증감 수정 조사 경로를 보완하였다.
re_path(r'^(?P[v1|v2]+)/v1/(?P\d+)/$', views.View1View.as_view({'get': 'retrieve',
                                                                             'delete': 'destroy',
                                                                             'patch': 'perform_update',
                                                                             'update': 'update'})),
from rest_framework.viewsets import ModelViewSet

class View1View(ModelViewSet):
    queryset = models.Role.objects.all()
    serializer_class = PagerSerializers
    pagination_class = MyPageNumberPagination

  • 간단한 삭제 수정 모델 뷰셋
  • 삭제(Create Model Mixin, Destroy Model Mixin) + Generic ViewSet
  • 복잡한 논리GenericViewSet 또는 APIView
  • 좋은 웹페이지 즐겨찾기