aww*_*ter 4 django django-rest-framework
我正在尝试对 ViewSet 的结果进行分页,但无法获得对数据进行分页的响应。
当我设置全局分页时,它工作正常,但是我不想这样做并覆盖来自 的所有视图/视图集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'
}
Run Code Online (Sandbox Code Playgroud)
当我删除默认设置时,此视图会丢失分页结果
# views.py
from rest_framework.viewsets import ModelViewSet
class ClipViewSet(ModelViewSet):
serializer_class = ClipSerializer
queryset = Clip.objects.all()
pagination_class = PageNumberPagination
Run Code Online (Sandbox Code Playgroud)
从文档中的所有迹象来看,这应该是完全可能的,我不确定为什么在我的项目中它不起作用。我正在使用 django 1.9.7 和 DRF 3.4.0
这不是一个错误。正如您在源代码中看到的,默认页面大小PageNumberPagination是None,这意味着分页被禁用,即使您明确指定了分页器类。
您需要PageNumberPagination使用您需要的子类page_size来激活分页:
class MyPageNumberPagination(PageNumberPagination):
page_size = 5
class ClipViewSet(ModelViewSet):
pagination_class = MyPageNumberPagination
Run Code Online (Sandbox Code Playgroud)
请注意,您需要page_size 在分页器类上进行设置,而不是在视图上进行设置。
或者将页面大小放在全局设置中:
REST_FRAMEWORK = {
'PAGE_SIZE': 5
}
Run Code Online (Sandbox Code Playgroud)
然后就可以直接使用了PageNumberPagination。
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |