AttributeError: '' 对象没有属性 'page' DRF 分页

the*_*rit 2 django pagination django-rest-framework

这是我两天前提出的问题。我用路易斯·巴兰奎罗的答案来解决我的问题。现在我想在序列化数据中添加当前页码以及 page_size 。我知道我必须在类中自定义get_pagination_responsePageNumberPagination方法,但是当我这样做时,我收到此错误:

我的代码

 def get_paginated_response(self, data, request):
        # import pdb
        # pdb.set_trace()
        return Response(OrderedDict([
            ('next', self.get_next_link()),
            ('current', self.get_current_link()),
            ('previous', self.get_previous_link()),
            ('results', data)
        ]))

    def get_queryset(self, request):
        product_sync_ts = self.request.GET.get('product_sync_ts', None)
        if product_sync_ts:
            product = Product.objects.filter(....)
            )
            # return self.get_paginated_response(product, self.request)
            return Response(product)
        else:
            content = {'details': "Bad Request"}
            raise APIException400(request, content)


    def get(self, request, format=None):
        products = self.get_queryset(request)
        serializer = SyncedProductSerializer(instance={'products': products})
        # product = self.paginate_queryset(serializer, request)
        return self.get_paginated_response(serializer, request)
        # return self.get_paginated_response(serializer.data, request)
Run Code Online (Sandbox Code Playgroud)

错误:

File "/Users/Documents/content-api/venv/lib/python2.7/site-packages/rest_framework/pagination.py", line 242, in get_next_link
    if not self.page.has_next()
AttributeError: 'PaginatedProductList' object has no attribute 'page'
Run Code Online (Sandbox Code Playgroud)

dio*_*mao 6

有人可能想尝试:

REST_FRAMEWORK = {
    'PAGE_SIZE': 20,
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',}
Run Code Online (Sandbox Code Playgroud)

在设置.py

有这样的景色

class GeneralManagementAPIView(generics.ListAPIView):
    queryset = GeneralManagements.objects.all()
    permission_classes = (IsAuthenticatedOrReadOnly,)
    renderer_classes = (GeneralManagementJSONRenderer,)
    serializer_class = GeneralManagementSerializer

    def get_queryset(self):
        return GeneralManagements.objects.all()

    def list(self, request):
        queryset = self.get_queryset()
        page = self.paginate_queryset(queryset)
        print("request ", request)

        serializer_context = {'request': request}
        serializer = self.serializer_class(
            page, context=serializer_context, many=True
        )
        print("serializer ", serializer, "serializer.data", serializer.data )
        return self.get_paginated_response(serializer.data)
Run Code Online (Sandbox Code Playgroud)