我有一个 View 集,它具有以下 list 方法:
class PolicyViewSet(viewsets.ViewSet):
def list(self, request):
queryset = Policy.objects.all()
serializer = PolicySerializer(queryset, many=True)
return Response(serializer.data)
这按预期工作,我得到了我想要的响应。但是,现在我试图限制每个 GET 请求返回的对象,为此我正在使用分页。我在设置.py:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 20
}
文档说:
Pagination is only performed automatically if you're using the generic views or viewsets.
但是,我的结果仍然没有分页。我还需要做什么才能启用分页?
最佳答案
如果您覆盖您的列表或您需要显式调用的任何主要方法。
class PolicyViewSet( viewsets.GenericViewset):
def list(self, request):
queryset = Policy.objects.all()
page = self.paginate_queryset(queryset)
serializer = PolicySerializer(page, many=True)
return self.get_paginated_response(serializer.data)
关于python - 在 Django Rest 框架 View 集中为列表方法设置分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54566836/