【发布时间】:2018-01-06 03:04:56
【问题描述】:
我正在尝试根据the docs 在 ViewSet 上实现自定义分页类,但分页设置并没有做任何事情。这是我的 ViewSet 的代码。
from rest_framework import status, permissions, viewsets
from rest_framework.pagination import PageNumberPagination
class ProductViewSetPagination(PageNumberPagination):
page_size = 5
page_size_query_param = 'page_size'
max_page_size = 1000
class ProductViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = ProductSerializer
pagination_class = ProductViewSetPagination
# ...
def list(self, request):
#get_queryset is also overridden to accept filters in query_params
queryset = self.get_queryset()
if not queryset.exists():
return Response(status=status.HTTP_204_NO_CONTENT)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
我什至在 settings.py 文件中添加了一些默认值,但我仍然在 product-list 视图的单个页面上获取所有产品实例。我尝试将page 和page_size 查询参数添加到URL;这不会改变任何事情。
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
我错过了什么?
【问题讨论】:
-
你是使用默认列表方法还是覆盖它?
-
它被覆盖了。我已经添加了代码。
-
我认为如果您覆盖列表方法,那么您必须实现自己的分页?
标签: django rest pagination django-rest-framework