Django Rest Framework提供了多种分页器,可以让我们方便地对查询结果进行分页。下面是一个最常使用DRF分页的示例:
在settings.py中设置全局分页:
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10, # 每页数目
然后在使用ModelViewSet时,可以重写分页类,做到统一返回格式,方便前端调用:
class SelfPagination(PageNumberPagination):
page_size = 10 # 每页展示的数目
max_page_size = 10000 # 最多展示10000页
page_query_param = 'page' # 前端发送的页数关键字名,默认为"page"
page_size_query_param = 'size' # 前端发送的每页数目关键字名,默认为None
#自定义分页结果返回数据
def get_paginated_response(self, data):
return Response(OrderedDict([
('total', self.page.paginator.count),
('next', self.get_next_link()),
('previous', self.get_previous_link()),
('rows&#