Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架全局分页和分页_类不工作_Python_Django_Django Rest Framework_Django Pagination - Fatal编程技术网

Python Django Rest框架全局分页和分页_类不工作

Python Django Rest框架全局分页和分页_类不工作,python,django,django-rest-framework,django-pagination,Python,Django,Django Rest Framework,Django Pagination,我的设置: 我的分页类: 来自rest_framework.pagination导入PageNumberPagination 类CustomNumberPagination(PageNumberPagination): 页面大小=5 我的测试视图类: 来自rest_framework.pagination导入PageNumberPagination from.pagination导入CustomNumberPagination 类测试(generics.GenericAPIView): qu

我的设置:

我的分页类:

来自rest_framework.pagination导入PageNumberPagination
类CustomNumberPagination(PageNumberPagination):
页面大小=5
我的测试视图类:

来自rest_framework.pagination导入PageNumberPagination
from.pagination导入CustomNumberPagination
类测试(generics.GenericAPIView):
queryset=Testing.objects.all()
serializer\u class=TestingSerializer
分页\u类=自定义编号分页
def get(自我,请求):
打印PageNumberPagination.page#u大小#2
打印自分页_class.page_大小#5
queryset=self.get_queryset()
serializer=self.serializer\u类(queryset,many=True)
返回响应(serializer.data,status=status.HTTP\u 200\u OK)
我可以在控制台中正确打印PageNumberPaging和CustomNumberPaging的页面大小

但是,将
页面
作为参数传递不会产生任何效果。我无法在每个视图中使用全局分页或分页类。我不确定哪里出了问题,但似乎大多数人都做了同样的事情,只是为他们工作。如果有任何建议,我将不胜感激

更新 我从下面选择的答案中得到了一些启示

由于我将不得不在覆盖的
get()
中编写大量自定义项,因此我刚刚更新了我的
get()


看看drf本身是如何实现的:

class ListModelMixin(object):
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)
希望这将帮助你-这是不言自明的

您使用了
GenericAPIView
-并覆盖了get-您应该使用
get\u paginated\u response
方法来实现分页


快乐编码。

看看drf本身是如何实现的:

class ListModelMixin(object):
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)
希望这将帮助你-这是不言自明的

您使用了
GenericAPIView
-并覆盖了get-您应该使用
get\u paginated\u response
方法来实现分页


快乐的编码。

这很鼓舞人心,我刚刚解决了我的问题!非常感谢你!这很鼓舞人心,我刚刚解决了我的问题!非常感谢你!注意self.request.query_params.get('page')-如果没有指定页面,您的端点将返回queryset:)中的所有对象,通常在这种情况下只返回第一页是很好的。所以…get('page',1)感谢您友好的提醒:D我将不得不将
page
设置为可选,因为我们的FE现在不支持分页。请注意self.request.query_params.get('page')-如果没有指定页面,您的端点将返回queryset:)中的所有对象。通常在这种情况下,只返回第一页是很好的。因此…获取('page',1)感谢您的友好提醒:D我将不得不将
页面
设置为可选,因为我们的FE现在不支持分页。
class ListModelMixin(object):
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)