如何在DRF PageNumberPagination中设置动态page_size

Jay*_*Jay 3 python django django-rest-framework

在课堂上PostByFilters,我将limit作为url参数,我想将值分配给page_size课堂BasicSizePagination。我试图在这两个类之外使用全局变量,但是没有用。无论如何有重新初始化BasicSizePaginationin PostByFilters以便我可以直接分配in的值PostByFilters吗?

class BasicSizePagination(pagination.PageNumberPagination):
    page_size = 10

class PostByFilters(ListAPIView):
    serializer_class = serializers.PostSerializer
    pagination_class = BasicSizePagination

    def get_queryset(self):

        limit = self.request.query_params.get('limit', None)
        ...

        return queryset
Run Code Online (Sandbox Code Playgroud)

JPG*_*JPG 6

从下面创建一个新的分页类PageNumberPagination并覆盖page_size_query_param属性

from rest_framework.pagination import PageNumberPagination


class CustomPageNumberPagination(PageNumberPagination):
    page_size_query_param = 'size'  # items per page
Run Code Online (Sandbox Code Playgroud)

因此,您的URL为,/api/foo/?size=10每页将返回10个项目。如果您未size在网址中提供参数,则DRF将使用settings.PAGE_SIZE