PostByFilters类中,我将limit作为url参数,我想将该值分配给page_size类中的BasicSizePagination。我试图在这两个类之外使用全局变量,但是没有用。无论如何,是否需要在BasicSizePagination中重新初始化PostByFilters以便我可以直接在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

最佳答案

PageNumberPagination 创建一个新的分页类,并覆盖 page_size_query_param 属性,如下所示

from rest_framework.pagination import PageNumberPagination


class CustomPageNumberPagination(PageNumberPagination):
    page_size_query_param = 'size'  # items per page

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

关于python - 如何在DRF PageNumberPagination中设置动态page_size,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53771709/

10-12 20:08