#1.第一种分页方式是在函数中使用 from api.utils.serializsers.pager import PagerSerialiser from rest_framework.response import Response from rest_framework.pagination import PageNumberPagination class Pager1View(APIView): def get(self,request,*args,**kwargs): #获取所有数据 roles = models.Role.objects.all() #创建分页对象 pg = PageNumberPagination() #获取分页的数据 page_roles = pg.paginate_queryset(queryset=roles,request=request,view=self) #对数据进行序列化 ser = PagerSerialiser(instance=page_roles,many=True) return Response(ser.data)
#2.第二种分页方式 #自定义分页类 class MyPageNumberPagination(PageNumberPagination): #每页显示多少个 page_size = 3 #默认每页显示3个,可以通过传入pager1/?page=2&size=4,改变默认每页显示的个数 page_size_query_param = "size" #最大页数不超过10 max_page_size = 10 #获取页码数的 page_query_param = "page"
#3.第三种分页方式 #自定义分页类2 class MyLimitOffsetPagination(LimitOffsetPagination): #默认显示的个数 default_limit = 2 #当前的位置 offset_query_param = "offset" #通过limit改变默认显示的个数 limit_query_param = "limit" #一页最多显示的个数 max_limit = 10
#4.第四种分页方式 #自定义分页类 (加密分页) class MyCursorPagination(CursorPagination): cursor_query_param = "cursor" page_size = 2 #每页显示2个数据 ordering = 'id' #排序 page_size_query_param = None max_page_size = None
2.在类中使用
class PatientModelViewSet(ModelViewSet): queryset = models.Patient.objects.filter(is_delete=False) serializer_class = Serializer.PatientModelSerializer #指向自定义分页的类 pagination_class = MyCursorPagination
借鉴https://www.cnblogs.com/derek1184405959/p/8727595.html