重写get_paginated_response方法后Api Root中Filters连接消失

来源:6-1 商品类别数据接口-1

关中农家人

2020-09-27

老师好,在自定义pagination_class类MyPagination中重写get_paginated_response方法后,Api Root中就看不到Filters的连接了,但是不影响url带参数访问,只要把get_paginated_response注销掉,连接就又出现了,这个是什么问题,要怎么解决呢?谢谢

图片描述

class MyPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'limit'
    page_query_param = 'page'
    max_page_size = 500
	
    def get_paginated_response(self, data):
        return Response({
            'code': 2000,
            'detail': 'success',
            'previous': self.get_previous_link(),
            'next': self.get_next_link(),
            'data': {
                'total': self.page.paginator.count,
                'items': data
            }
        })


class UsersViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):

    queryset = Users.objects.all()
    serializer_class = MySerializer

    pagination_class = MyPagination

    filter_class = MyFilter

    filter_backends = (DjangoFilterBackend, )
写回答

1回答

bobby

2020-09-28

from collections import OrderedDict, namedtuple
# Create your views here.



class GoodsPagination(PageNumberPagination):
    page_size = 12
    page_size_query_param = 'page_size'
    page_query_param = "page"
    max_page_size = 100

    def get_paginated_response(self, data):
        return Response(OrderedDict([
            ('code', 200),
            ('detail', 'success'),
            ('data', {
                'total': self.page.paginator.count,
                'items': data
            }),
            ('count', self.page.paginator.count),
            ('next', self.get_next_link()),
            ('previous', self.get_previous_link()),
            ('results', data)
        ]))

这样改

0
2
bobby
回复
关中农家人
1. 可以删除data中的items, 下面的results不能删除,如果你不想数据重复 那你就将下面的result中的值设置为空的list
2020-10-01
共2条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2880 学习 · 2467 问题

查看课程