GenericAPIView 简单使用

list

APIView

class DemoView(APIView):
    def get(self, request):
        queryset = models.UserInfo.objects.all()
        pager = PageNumberPagination()
        result = pager.paginate_queryset(queryset, request, self)
        ser = DemoModelSerializer(instance=result, many=True)
        response = pager.get_paginated_response(ser.data)
        return response

GenericAPIView

from rest_framework.generics import GenericAPIView

class Demo1View(GenericAPIView):
    queryset = models.UserInfo.objects.all()
    serializer_class = DemoModelSerializer
    pagination_class = PageNumberPagination

    def get(self, request):
        queryset = self.get_queryset()
        result = self.paginate_queryset(queryset)
        ser = self.get_serializer(intance=result, many=True)
        response = self.get_paginated_response(ser.data)
        return response

单个

APIView

class DemoDetailView(APIView):
    def get(self, request, pk):
        queryset = models.UserInfo.objects.get(pk=pk)
        ser = DemoModelSerializer(instance=queryset, many=False)
        return Response(ser.data)

过滤类

from rest_framework.filters import BaseFilterBackend

class MyFilterBackend(BaseFilterBackend):

    def filter_queryset(self, request, queryset, view):
        # 在此做筛选
        return queryset

GenericAPIView

from rest_framework.generics import GenericAPIView

class Demo1DetailView(GenericAPIView):
    queryset = models.UserInfo.objects.all()
    serializer_class = DemoModelSerializer
    pagination_class = PageNumberPagination
    filter_backends = [MyFilterBackend, ]
    def get(self, request, pk):
        # 查询+校验权限
        queryset = self.get_object()
        ser = self.get_serializer(instance=queryset)
        return Response(ser.data)
posted @ 2022-10-10 10:43  Sherwin_szw  阅读(33)  评论(0)    收藏  举报