Django Rest Framework全局分页和pagination_class不起作用

时间:2017-02-17 20:50:41

标签: python django django-rest-framework django-pagination

我的设置:

private static void loadDictWords(Path dictFile) throws Exception{
        dictTest = Files.lines(dictFile).collect(Collectors.toCollection(ArrayList::new));
    }

我的分页课程:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 2
}

我的测试视图类:

from rest_framework.pagination import PageNumberPagination


class CustomNumberPagination(PageNumberPagination):
    page_size = 5

我可以正确地在控制台中打印出PageNumberPagination和CustomNumberPagination的page_size。

但是,将from rest_framework.pagination import PageNumberPagination from .pagination import CustomNumberPagination class Testing(generics.GenericAPIView): queryset = Testing.objects.all() serializer_class = TestingSerializer pagination_class = CustomNumberPagination def get(self, request): print PageNumberPagination.page_size # 2 print self.pagination_class.page_size # 5 queryset = self.get_queryset() serializer = self.serializer_class(queryset, many=True) return Response(serializer.data, status=status.HTTP_200_OK) 作为参数传递并没有任何效果。我无法在每个视图中获得全局分页或pagination_class。我不确定出了什么问题,但似乎大多数人做了同样的事情而且只为他们工作。我很感激为我提出任何建议。

更新

从下面我选择的答案中获得了一些灵感。

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

get()

1 个答案:

答案 0 :(得分:1)

看看它是如何在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_paginated_response方法来实现分页。

快乐的编码。