zoukankan      html  css  js  c++  java
  • drf框架之分页器的用法

    1. 分页器分为:简单分页器与偏移分页器和加密分页器

    2.实现一个简单的分页器的用法:

    # 简单分页
    # 第一步,导入分页类
    # from rest_framework.pagination import PageNumberPagination
    # class MyPageNumberPagination(PageNumberPagination):
    #     page_size=4
    #
    # class BooksView(APIView):
    #     def get(self, request):
    #         response = CommonResponse()
    #         book_list = models.Book.objects.all()
    #
    #         # 第二步:实力化产生一个分页类对象,不需要传参数
    #         page_pagination = PageNumberPagination()
    #         #*****重点,4个参数
    #         page_pagination.page_size=4
    #         page_pagination.page_query_param='xx'
    #         page_pagination.page_size_query_param='max'
    #         # page_pagination.max_page_size=7
    #
    #         # 第一个参数是要分页的queryset对象,第二个参数是request对象
    #         ret = page_pagination.paginate_queryset(book_list, request, self)
    #         #第三步,再序列化的时候用ret对象
    #         book_ser = BookSerializer(instance=ret, many=True)
    #         response.msg = '查询成功'
    #         response.data = book_ser.data
    #         # return Response(response.get_dic)
    #         return page_pagination.get_paginated_response(book_ser.data)
    简单分页器的实现

    3. 加密分页器的实现:

    #CursorPagination 分页
    # from rest_framework.pagination import CursorPagination
    # class BooksView(APIView):
    #     def get(self, request):
    #         response = CommonResponse()
    #         book_list = models.Book.objects.all()
    #         page_pagination = CursorPagination()
    #         #重点的参数
    #         page_pagination.ordering='nid'
    #         # page_pagination.page_size=3
    #
    #
    #         ret = page_pagination.paginate_queryset(book_list, request, self)
    #         book_ser = BookSerializer(instance=ret, many=True)
    #         response.msg = '查询成功'
    #         response.data = book_ser.data
    #         # return Response(response.get_dic)
    #         return page_pagination.get_paginated_response(book_ser.data)
    加密分页器

    4. settings做相应的配置

    # 所有drf的配置,都放在这个字典中
    
    REST_FRAMEWORK={
        #第四步,配置每页显示的条数
        #每页显示3条
        'PAGE_SIZE':3
    
    
    }
    settings加载

    5. 分页器案例分析:

        分页器
            1 简单分页(查看第n页,每页显示n条)
                -使用方法
                    -1 导入PageNumberPagination类
                    -2 实例化产生一个对象
                        -page_pagination = PageNumberPagination()
                    -3 需要配置四个参数:page_size,page_query_param,page_size_query_param,max_page_size
                        -page_size必须指定:在setting中指定或者直接赋值
                    -4 调用下面的方法,返回ret数据
                        ret = page_pagination.paginate_queryset(book_list, request, self)
                    -5 再序列化,就是序列化返回的数据,也就是ret
                    
                    
                -类中需要掌握的几个属性
                    -page_size:控制每页显示条数
                    -page_query_param:控制查询第几页的查询参数,
                        -比如page_query_param='xx'
                        -http://127.0.0.1:8000/books/?xx=2  表示查询第二页的数据
                    -page_size_query_param:控制每页最大显示的条数
                        -比如page_pagination.page_size_query_param='max'
                        -http://127.0.0.1:8000/books/?xx=2&max=6   表示查询第二页的数据,每页显示6条
                    -max_page_size:控制每页最大显示的条数
                        -比如:page_pagination.max_page_size=7
                        -http://127.0.0.1:8000/books/?max=1000    最多显示7条
  • 相关阅读:
    Anagram
    HDU 1205 吃糖果(鸽巢原理)
    Codeforces 1243D 0-1 MST(补图的连通图数量)
    Codeforces 1243C Tile Painting(素数)
    Codeforces 1243B2 Character Swap (Hard Version)
    Codeforces 1243B1 Character Swap (Easy Version)
    Codeforces 1243A Maximum Square
    Codeforces 1272E Nearest Opposite Parity(BFS)
    Codeforces 1272D Remove One Element
    Codeforces 1272C Yet Another Broken Keyboard
  • 原文地址:https://www.cnblogs.com/gukai/p/10780896.html
Copyright © 2011-2022 走看看