zoukankan      html  css  js  c++  java
  • drf 分页器组件

    一、使用drf分页器

    drf 的GenericAPIView这个视图基类提供了三种分页器:但是这里只列举两个,个人认为,最后一个没什么用

    • PageNumberPagination类 (常用)作用:一页显示的条数

      # url:示例
      http://http://127.0.0.1:8000/books/?page=2
      http://http://127.0.0.1:8000/books/?page=2&page_size=100
      
    • LimitOffsetPagination类 作用:从offset开始往后显示limit条

      # url:示例
      http://http://127.0.0.1:8000/books/?limit=100
      http://http://127.0.0.1:8000/books/?limit=100&offset=400
      
    • CursorPagination类 作用:只是将url中做了一层加密,其他的没有不同,但必须和OrderingFilter类排序参数连用

    定义分页器类

    from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination
    
    class CoursePageNumberPagination(PageNumberPagination):
        # 默认一页条数
        page_size = 2
        # 前端发送的页数关键字名
        page_query_param = 'page'
        # 用户自定义一页条数 关键字名
        page_size_query_param = 'page_size'
        # 用户自定义一页最大控制条数
        max_page_size = 10
    
    class CourseLimitOffsetPagination(LimitOffsetPagination):
        # 默认一页条数
        default_limit = 2
        # 从offset开始往后显示limit条
        limit_query_param = 'limit'
        offset_query_param = 'offset'
        max_limit = 2
    

    使用

    # 导入分页器组件
    from . import paginations
    class FreeCourseListAPIView(ListAPIView):
        queryset = models.Course.objects.filter(is_delete=False, is_show=True).order_by(
            "-orders").all()
        serializer_class = serializers.FreeCourseModelSerializer
        
    	# 使用分页器(只能使用一个)
        # pagination_class = paginations.CoursePageNumberPagination
        pagination_class = paginations.CourseLimitOffsetPagination
    
  • 相关阅读:
    剑指offer(第2版)刷题 Python版汇总
    git学习笔记
    Python中的lambda、map和filter
    算法题 22 折纸问题 (牛客网,今日头条)
    算法题 21 findNSum (好未来,LeetCode,牛客网)
    算法题 20 或与加
    Python的内存管理机制
    【算法题12 解码方法decode way】
    理解循环神经网络的来龙去脉
    机器学习资源个人汇总
  • 原文地址:https://www.cnblogs.com/XuChengNotes/p/12019778.html
Copyright © 2011-2022 走看看