【发布时间】:2016-06-15 21:09:25
【问题描述】:
我在使用 Django Rest Framework 的分页类时遇到问题。
版本:
- Django 1.9.2
- Django Rest 框架 3.3.2
这是我的自定义分页类。
分页.py:
from rest_framework import pagination
class VideoPagination(pagination.PageNumberPagination):
page_size = 10
page_size_query_param = 'page'
max_page_size = 10000
settings.py:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': ('rest_framework.pagination.PageNumberPagination',),
'PAGE_SIZE': 10,
}
在我的 views.py 中,我有一个 ListAPIView 列出了所有视频模型,它使用了我的自定义分页器。
views.py:
class explore(ListAPIView):
serializer_class = ExploreVideoSerializer
pagination_class = VideoPagination
def get_queryset(self):
category = self.kwargs['category']
if category == 'all':
return Video.objects.all().order_by('-date')
else:
return Video.objects.filter(category=category).order_by('-date')
def get_serializer_context(self):
return {"request": self.request}
问题是,当我向这个视图发出请求时,在第一页它提供了 10 个项目,这正是我想要的。然后在第二页和第三页,它给出了不到 10 个项目。
例如,有 16 个视频项。在第一个请求中,它给出了前 10 个。在第二页的请求中,它给出了其中的 2 个。它还说还有另一页,并给出了另外 3 页。在第 4 页中,它给出了其中的 4 个。这种行为的原因可能是什么?我无法修复它,所以我请求您的帮助。
Not:在第一个 url 中,我没有添加页码。下一个 url 直接是 ?page=2。所以我猜它没有使用 ?page=1 但是当我请求 ?page=1 时它只提供 1 个模型。
【问题讨论】:
标签: python django pagination django-rest-framework