Django DRF分页_类不返回分页结果
我正在尝试对视图集的结果进行分页,但无法获得对数据进行分页的响应 当我设置全局分页时,它可以正常工作,但是我不想这样做,而是覆盖来自Django DRF分页_类不返回分页结果,django,django-rest-framework,Django,Django Rest Framework,我正在尝试对视图集的结果进行分页,但无法获得对数据进行分页的响应 当我设置全局分页时,它可以正常工作,但是我不想这样做,而是覆盖来自GenericAPIView的所有视图/视图集,因为我只想对一个类进行分页 """ don't want to do this, but this works showing that my view is based off of `GenericAPIView`. # settings.py """ REST_FRAMEWORK = { 'DEFAU
GenericAPIView
的所有视图/视图集,因为我只想对一个类进行分页
"""
don't want to do this, but this works showing that my view is based off of `GenericAPIView`.
# settings.py
"""
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination'
}
删除默认设置时,此视图将丢失分页结果
# views.py
from rest_framework.viewsets import ModelViewSet
class ClipViewSet(ModelViewSet):
serializer_class = ClipSerializer
queryset = Clip.objects.all()
pagination_class = PageNumberPagination
从所有的迹象来看,这应该是完全可能的,我不知道为什么在我的项目中它不起作用。我正在使用django 1.9.7和DRF 3.4.0,这不是一个bug。如中所示,
PageNumberPagination
的默认页面大小为None
,这意味着分页被禁用,即使您明确指定了分页器类
您需要使用所需的page_size
对PageNumberPagination
进行子类化,才能激活分页:
class MyPageNumberPagination(PageNumberPagination):
page_size = 5
class ClipViewSet(ModelViewSet):
pagination_class = MyPageNumberPagination
请注意,您需要在paginator类而不是视图上设置页面大小
或将页面大小设置为全局设置:
REST_FRAMEWORK = {
'PAGE_SIZE': 5
}
然后您可以直接使用PageNumberPagination
您使用的页面大小是否正确?尝试在视图中将其设置为较小的值,然后重试。是的,目前有11个结果,我已将页面大小设置为5,并且它不分页(在设置中设置默认值时除外),这对我来说似乎是一个错误。您可以在DRF的github repo中打开一个问题。@SudipKafle我得出了相同的结论,已经发布了我们将看到他们所说的,我认为这是一个bug,或者至少是一个文档问题,如果他们不希望您能够在不同的视图上选择不同的页面大小。但是,是的,我得出了相同的结论,它更多地涉及github问题,而不是stackoverflow。对于其他研究此问题的人-您可以为不同的视图使用不同的页面大小,您只需使用PageNumberPagination
的不同子类来设置所需的页面大小(如中所述)。但我同意这不是一个非常直观和方便的设计。这最终是tom今天早上在master中更新的文档的一个问题(从未声明在视图上使用pagination\u class
需要PAGE\u SIZE
设置),这就是导致我陷入困惑的原因。