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)