我们可以在配置文件中设置全局的分页方式,如:
REST_FRAMEWORK = {
  # 全局分页,一旦设置了全局分页,那么我们drf中的视图扩展类里面的list方法提供的列表页都会产生分页的效果。所以一般不用全局分页
    ‘DEFAULT_PAGINATION_CLASS‘:  ‘rest_framework.pagination.PageNumberPagination‘,
    ‘PAGE_SIZE‘: 100  # 每页最大数据量
}
注意:如果在视图内关闭分页功能,只需在视图内设置
pagination_class = None
1) PageNumberPagination
前端访问网址形式:
GET  http://127.0.0.1:8000/students/?page=4
可以在子类中定义的属性:
from rest_framework.pagination import PageNumberPagination
class LargeResultsSetPagination(PageNumberPagination):
    page_size = 1000 # 每页显示多少条数据
    page_query_param = ‘pp‘ # 127.0.0.1:8000/books/?pp=5 查询第5页
    page_size_query_param = ‘page_size‘ # 提供用户自行控制显示多少条数据,127.0.0.1:8000/books/?page_param=5
    max_page_size = 10000 # 控制上一行每页最多现实多少条
class BookDetailView(RetrieveAPIView):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer
    pagination_class = LargeResultsSetPagination
2)LimitOffsetPagination
可以在子类中定义的属性:
PAGE_SIZE设置一致from rest_framework.pagination import LimitOffsetPagination
class StandardLimitOffsetPagination(LimitOffsetPagination):
    # 默认每一页查询的数据量,类似上面的page_size
    default_limit = 2
    limit_query_param = "size"
    offset_query_param = "start"
class StudentAPIView(ListAPIView):
    queryset = Student.objects.all()
    serializer_class = StudentModelSerializer
    # 调用页码分页类
    # pagination_class = StandardPageNumberPagination
    # 调用查询偏移分页类
    pagination_class = StandardLimitOffsetPagination
GET http://127.0.0.1/four/students/?limit=100&start=400  #从下标为400的记录开始,取100条记录
原文:https://www.cnblogs.com/freedom0923/p/13032324.html