python - 在 Django Rest 框架 View 集中为列表方法设置分页

标签 python django pagination django-rest-framework

我有一个 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/

相关文章:

Django 删除多个 m2m 关系而不循环

Django分页随机: order_by ('?' )

Mysql - 查询的排名字段

javascript - 如何在我使用ul和li标签的情况下使用jQuery Datatable实现分页

django prefetch_related 不工作

python - 如何在Python中正确编码?

python - 在 Python 中将字符串转换为整数

python - 使用 BeautifulSoup 的不同 XML 元素名称列表

python - 使用 Dynatree 将节点从一棵树移动到另一棵树

Django Social-auth : Fetching date of birth, 地址,以及来自 facebook 的更多字段