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
设置),这就是导致我陷入困惑的原因。