DRF支持配置分页,无须安装额外插件。使用DRF的分页功能,可以通过以下两种方式实现。
可以在settings.py中配置,这样所有视图都用这个分页配置。配置示例代码如下:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}
这样,每个视图都会用PageNumberPagination来作为默认的分页器,并且每页会展示10条数据。
如果有些视图需要有自己的分页逻辑,那么可以通过继承drf的分页类来实现分页器,然后在视图中指定这个自定义的分页器。示例代码如下:
# pagination.py
from rest_framework.pagination import PageNumberPagination
class MerchantPagination(PageNumberPagination):
# 默认一页的大小
page_size=20
# 每页最多不能超过30条数据
max_page_size = 30
# 用户自己指定一页展示多少条数据
page_size_query_param = 'page_size'
然后在视图中指定以上定义的分页器:
class MerchantViewSet(viewsets.ModelViewSet):
queryset = Merchant.objects.all()
serializer_class = MerchantSerializer
pagination_class = MerchantPagination
如果继承自PageNumberPagination,那么有以下参数可以重写:
page_size:每页数据的条数。page_query_param:在url中传递的页码的参数名,默认为page。page_size_query_param:在url中传递的每页数据条数,默认为None。max_page_size:一页最多展示数据的条数,默认为None。