在 Django REST Framework 中限制每页项目的最佳方法是什么?我设置 PAGINATE_BY = 20 和 PAGINATE_BY_PARAM。如果没有参数,您将获得 20 个项目,但也可以通过 paginate 参数获得 4000 个项目。这个请求非常繁重,不是很有用,但对于脚本小子来说是完美的。
雅鲁斯
在 Django REST Framework 中限制每页项目的最佳方法是什么?我设置 PAGINATE_BY = 20 和 PAGINATE_BY_PARAM。如果没有参数,您将获得 20 个项目,但也可以通过 paginate 参数获得 4000 个项目。这个请求非常繁重,不是很有用,但对于脚本小子来说是完美的。
雅鲁斯
如果您想设置硬性最大限制,请查看在get_paginate_by
通用视图上覆盖该方法。
您需要设置PAGINATE_BY
为文档状态:
PAGINATE_BY:用于分页的默认页面大小。如果设置为 None,则默认禁用分页
PAGINATE_BY_PARAM
是让用户覆盖默认大小。因此,如果您害怕它的滥用,请不要启用它。
PAGINATE_BY_PARAM:查询参数的名称,客户端可以使用它来覆盖用于分页的默认页面大小。如果设置为无,客户端可能不会覆盖默认页面大小。
最好通过分页
该类PageNumberPagination
包括许多attributes
可以被覆盖以修改分页样式的内容。
class ItemSetPagination(PageNumberPagination):
page_size = 1000
page_size_query_param = 'page_size'
max_page_size = 10000
pagination_class = ItemSetPagination
如文档所述,设置'MAX_PAGINATE_BY'
为配置每页的全局最大结果。
文档中的示例:
REST_FRAMEWORK = {
'PAGINATE_BY': 10, # Default to 10
'PAGINATE_BY_PARAM': 'page_size', # Allow client to override, using `?page_size=xxx`.
'MAX_PAGINATE_BY': 100 # Maximum limit allowed when using `?page_size=xxx`.
}
设置max_paginate_by
为在每次查看的基础上配置每页的硬性最大限制。
文档中的示例:
class PaginatedListView(ListAPIView):
queryset = ExampleModel.objects.all()
serializer_class = ExampleModelSerializer
paginate_by = 10
paginate_by_param = 'page_size'
# Set MAX results per page
max_paginate_by = 100