zoukankan      html  css  js  c++  java
  • Django_rest_framework分页

    分页基本流程及配置

    1、基于LimitOffsetPagination做分页,根据配置

    from rest_framework.pagination import LimitOffsetPagination
    class P1(LimitOffsetPagination):
        max_limit = 3
        default_limit = 2
        limit_query_param = 'limit'
        offset_query_param = 'offset'
    class IndexView(APIView):
        parser_classes = [JSONParser, FormParser, MultiPartParser]
        def get(self, request):
            # parser_classes = [JSONParser, FormParser]
            user_list = models.UserInfo.objects.all()
            # 实例化一个分页对象,并根据分页的配置获取数据列表
            p1 = P1()
            page_user_list = p1.paginate_queryset(queryset=user_list, request=request, view=self)
            ser = UserInfoSerializer(instance=page_user_list, many=True)
            # return Response(ser.data)  # 不含上一页和下一页
            return p1.get_paginated_response(ser.data)  # 含上一页和下一页,详见下图
    

    2、基于PageNumberPagination的分页

    class P2(PageNumberPagination):
        # 每页显示的数据条数
        max_page_size = 5
        page_size = 3  
        page_size_query_param = 'size'
        # 页码关键字
        page_query_param = 'page'
    # 视图部分和基于LimitOffsetPagination是样的,只需要把P1改成P2就可以了,页面显示效果如下图所示
    

    3、基于CurorPagination的分页

    class P3(CursorPagination):
        cursor_query_param = 'cursor'
        page_size = 2
        ordering = 'id'
    # 视图部分和基于LimitOffsetPagination是样的,只需要把P1改成P3就可以了,而且,页码的也是不是明文,有助于防止恶意一下子请求过多数据。页面显示效果如下图所示,
    

  • 相关阅读:
    SVN
    jenkins可视化
    Tomcat
    防火墙
    keepalived
    MHA高可用
    http
    inotifywait
    DNS
    nginx
  • 原文地址:https://www.cnblogs.com/eric_yi/p/8432687.html
Copyright © 2011-2022 走看看