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条
  • 相关阅读:
    [Sdoi2016]征途
    何时会发生db file sequential read等待事件?
    oracle分布式事务总结
    db file scattered read 等待事件
    db file sequential read (数据文件顺序读取)
    INDEX_JOIN
    Oracle优化器介绍
    GC Buffer Busy Waits处理(转载)
    Oracle V$SESSION详解
    Oracle锁表(转载)
  • 原文地址:https://www.cnblogs.com/gukai/p/10780896.html
Copyright © 2011-2022 走看看