首页 > 其他分享 >分页组件

分页组件

时间:2023-12-28 16:45:24浏览次数:32  
标签:pagination 分页 class limit 组件 每页 page

分页组件的使用

有三种分页方式

需要新建一个py文件,以pagination.py为例

 

方式一:基本分页

第一步:导入分页类

from rest_framework.pagination import PageNumberPagination

 

第二步:书写分页类,继承 PageNumberPagination 并定义属性

class CommonPageNumberPagination(PageNumberPagination):
    page_size = 2  # 每页大小,一页显示多少条
    page_query_param = 'page'  # 分页查询条件   ?page=1     ?page =2
    page_size_query_param = 'size'  # 每页最多显示多少条的查询条
    max_page_size = 5  # 每页最多显示多少条

 

第三步:书写视图类,配置分页类属性

# 导入自定义分页类
from .pagination import CommonPageNumberPagination

class BookView(ViewSetMixin, ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer


    # 基本分页:http://127.0.0.1:8000/api/v1/books/?page=1&size=3
    pagination_class = CommonPageNumberPagination  # 不要放在列表中,分页方式只能选一种

 

第四步:前端访问

http://127.0.0.1:8000/api/v1/books/?page=2  # 查询第二页,显示2条
http://127.0.0.1:8000/api/v1/books/?page=2&size=3  # 查询第二页,显示3条,但是有最大限制,最多只显示5条

 

 

方式二:偏移分页

第一步:配置分页类

from rest_framework.pagination import LimitOffsetPagination

class CommonLimitOffsetPagination(LimitOffsetPagination):
    default_limit = 2  # 每页显示条数
    limit_query_param = 'limit'  # 每页显示条数 的查询条数  ?limit=100  每页显示100条,如果不传,显示2条
    offset_query_param = 'offset'  # 偏移量 从第6条开始,拿30条 offset=6&limit=30
    max_limit = 5  # limit可以写很大,但是最多显示5条

 

第二步:配置视图类

from .pagination import CommonLimitOffsetPagination

class BookView(ViewSetMixin, ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    # 偏移分页 http://127.0.0.1:8000/api/v1/books/?limit=4&offset=2 从第2条开始,拿4条
    pagination_class = CommonLimitOffsetPagination

 

第三步:前端访问

http://api.example.org/accounts/?limit=1  # 每页显示1条
http://api.example.org/accounts/?offset=4&limit=4  # 从第4条开始,每页显示4条

 

 

方式三:游标分页

第一步:配置分页类

from rest_framework.pagination import CursorPagination

class CommonCursorPagination(CursorPagination):
    cursor_query_param = 'cursor'  # 按游标查询的查询条件 ,value值,前端是不知道的,只能通过后台返回
    page_size = 2  # 每页显示多少条
    ordering = 'id'  # 排序规则,必须是表中字段

 

第二步:配置视图类

from .pagination import CommonCursorPagination

class BookView(ViewSetMixin, ListAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    # 游标分页--->不能再跟排序连用了--》用的不多,app会用
    # 只能选择上一页和下一页,不能跳到某一页,但是速度快,针对于特别大数据量分页,有优势
    pagination_class = CommonCursorPagination

 

第三步:前端访问

# 无法跳转到指定页数,显示内容都在后端配置
http://127.0.0.1:8000/api/v1/books/?cursor=cD0y

 

标签:pagination,分页,class,limit,组件,每页,page
From: https://www.cnblogs.com/wellplayed/p/17933012.html

相关文章

  • 过滤组件
    过滤组件的使用有两种使用方式 方式一:使用drf内置过滤类第一步:保证视图类继承GenericAPIView及其子类#以图书类为例classBookView(ViewSetMixin,ListAPIView):queryset=Book.objects.all()serializer_class=BookSerializer 第二步:导入过滤类的相关......
  • 排序组件
    排序组件快速使用第一步:视图类需继承GenericAPIView或其子类#以图书类为例classBookView(ViewSetMixin,ListAPIView):queryset=Book.objects.all()serializer_class=BookSerializer 第二步:导入排序类相关组件#drf内置了排序类fromrest_framework.f......
  • layui 树组件tree 通过API获取数据
    一、简单vartreedata=[]; tree.render({ elem:'#addLeftType', id:'demoId', data:treedata, showCheckbox:true, oncheck:function(obj){ console.log(obj.data);//得到当前点击的节点数据 console.log(obj.checked);//节点是否被选中 console.l......
  • Unity3D 基类脚本怎么分别获取多个子类脚本的组件详解
    Unity3D是一款非常流行的游戏开发引擎,它提供了丰富的功能和工具,使得开发者可以轻松地创建高质量的游戏。在Unity3D中,脚本是游戏对象的一部分,它们通过附加到游戏对象上的组件来实现特定的功能。本文将详细介绍在Unity3D中如何分别获取多个子类脚本的组件,并提供相应的代码实现。对......
  • WSO2是一个开源的API管理平台,它提供了一套完整的解决方案,用于设计和发布API,创建和管理
    WSO2是一个开源的API管理平台,它提供了一套完整的解决方案,用于设计和发布API,创建和管理开发人员社区,以及以可扩展的方式保护和路由API流量¹。它利用来自WSO2平台的成熟组件来保护,集成和管理API¹。此外,它还与WSO2分析平台集成,提供现成的报告和警报,让您即时了解API行为¹。WSO2API......
  • get 分页传对象
    前台exportfunctionfetchList(query?:Object){returnrequest({url:'/bs/bsCompanyFinancial/page',method:'get',params:query})}conststate:BasicTableProps=reactive<BasicTableProps>({queryForm:{},......
  • 内置组件-Teleport
    介绍<Teleport>是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的DOM结构外层的位置去。基本用法​有时我们可能会遇到这样的场景:一个组件模板的一部分在逻辑上从属于该组件,但从整个应用视图的角度来看,它在DOM中应该被渲染在整个Vue应用外部的其他地方......
  • 内置组件-Transition
    介绍<Transition>是一个内置组件,这意味着它在任意别的组件中都可以被使用,无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发:由v-if所触发的切换由v-show所触发的切换由特殊元素切换的动态组件改变特殊......
  • 内置组件-TransitionGroup
    介绍<TransitionGroup>是一个内置组件,用于对v-for列表中的元素或组件的插入、移除和顺序改变添加动画效果。和<Transition>的区别​<TransitionGroup>支持和<Transition>基本相同的props、CSS过渡class和JavaScript钩子监听器,但有以下几点区别:默认情况下,它不......
  • drf之路由、认证组件
    drf之路由自动生成路由drf由于继承ViewSetMixin类,路由写法变了,原生django+drf,以后的路由写法,可能会有如下情况(三种情况)-path('books/',views.BookView.as_view()-path('books/',views.BookView.as_view({'get':'list','post':'create'}))......