【发布时间】:2017-11-27 01:55:35
【问题描述】:
DRF 文档声明:
只有在您使用通用视图或视图集时才会自动执行分页。
但我使用的是继承自 ViewSet 的 ModelViewSet,所以我告诉自己“酷,我所要做的就是将它添加到我的 settings.py”:
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 12, # for 12-col grid css frameworks
但是,这不起作用。
如果我为 27 个项目发送 GET 请求,它会返回所有项目(在可浏览的 API 和 json 中)。
- 我是否认为我应该只在 12 岁时被退回?
-
子问题: PAGE_SIZE 是每页返回的顶级对象的数量,对吗?我看到了一些
PAGINATE_BY的例子,但它 the source 中没有,所以我认为它已被弃用?
我正在使用 DRF 3.6.3、django 1.11.2。
编辑:我的设置:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 12,
}
我还在ModelViewSet 类中添加了pagination_class = PageNumberPagination,但没有效果。
以下是来自 shell 的验证,即 Pagination 类确实知道它应该提供的页面大小:
>>> from rest_framework.pagination import PageNumberPagination
>>> p = PageNumberPagination()
>>> p.max_page_size
>>> print(p.page_size)
12
【问题讨论】:
-
PAGINATE_BY 是以前设置页面大小的方法(django-rest-framework.org/topics/3.3-announcement/#deprecations)
标签: python django pagination django-rest-framework