分页

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,那么有以下参数可以重写: