1 内置了三种分页器 -PageNumberPagination:普通分页 -LimitOffsetPagination:偏移分页 -CursorPagination:游标分页 2 APIView和GenericAPIView+ListModelMixin 3 GenericAPIView+ListModelMixin的分页模式 4 PageNumberPagination:普通分页(用的最多) -page_size = api_settings.PAGE_SIZE # 每页显示多少条 -page_query_param = 'page' # 查询参数 -page_size_query_param = size # 查询的时候指定每页显示多少条 -max_page_size = 10 # 每页最多显示多少条 -使用方式: -定义一个类,继承PageNumberPagination -重写四个属性 -在继承了GenericAPIView+ListModelMixin视图类中配置 pagination_class = MyPageNumberPagination -查询 http://127.0.0.1:8000/students/?page=1&size=5 5 LimitOffsetPagination:偏移分页 -default_limit = api_settings.PAGE_SIZE # 默认条数 -limit_query_param = 'limit' # 查询时,指定查询多少条 -offset_query_param = 'offset' # 查询时,指定的起始位置是哪 -max_limit = None # 查询时,最多返回多少条 -使用方式: -定义一个类,继承LimitOffsetPagination -重写四个属性 -在继承了GenericAPIView+ListModelMixin视图类中配置 pagination_class = MyPageNumberPagination -查询 http://127.0.0.1:8000/students/?limit=100&offset=1 6 CursorPagination:游标分页(速度块) -cursor_query_param = 'cursor' # 查询的时候,指定的查询方式 -page_size = api_settings.PAGE_SIZE # 每页显示多少条 -ordering = '-created' # 排序方式 -page_size_query_param = size # 查询的时候指定每页显示多少条 -max_page_size = None #每页最多显示多少条 -使用方式: -定义一个类,继承LimitOffsetPagination -重写四个属性 -在继承了GenericAPIView+ListModelMixin视图类中配置 pagination_class = MyPageNumberPagination -查询 http://127.0.0.1:8000/students/?limit=100&offset=1 7 APIView的分页模式 -新建一个类,继承普通分页,重写四个属性 -视图类写法如下 class StudentApiView(APIView): def get(self,request): student_list=Student.objects.all() page=MyPageNumberPagination()# 实例化得到对象 # 只需要换不同的分页类即可 res=page.paginate_queryset(student_list,request,self)# 开始分页 ser=StudentSerializer(res,many=True) return page.get_paginated_response(ser.data) # 返回数据