Skip to main content
 首页 » 编程设计

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

2025年05月04日24zhenyulu

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