django分页器的用法_佳能分页器使用

django分页器的用法_佳能分页器使用前言当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面PageNumberPagination:基础分页器,性能略差LimitOffsetP

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面

  • PageNumberPagination:基础分页器,性能略差
  • LimitOffsetPagination:偏移分页器
  • CursorPagination:游标分页器,性能强大
     

PageNumberPagination

基础分页器PageNumberPagination,数据量越大性能越差。

首先我们在app中创建一个pagination.py文件,然后自定义一个分页器类,继承自PageNumberPagination

from rest_framework.pagination import PageNumberPagination


class MyPageNumberPagination(PageNumberPagination):
    """
    普通分页,数据量越大性能越差
    """
    # 默认页面展示的条数
    page_size = 3
    # 前端访问url需要添加 ?page=页码
    page_query_param = 'page'
    # 用户自定义返回的条数,格式?page_size=页数
    page_size_query_param = "page_size"
    # 用户自定义返回的条数最大限制,数值超过5也只展示5条
    max_page_size = 5

如果我们需要局部配置则在类视图中访问使用pagination_class = MyPageNumberPagination即可
如果是全局配置,则在settings.py文件中配置如下:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'api.pagination.MyPageNumberPagination',
}

之后我们访问url只需在后面加入?page=页码数即可
比如http://127.0.0.1:8000/api/cars/?page=2,代表访问第二页的数据,数据的条数默认为page_size的值
比如http://127.0.0.1:8000/api/cars/?page=2&page_size=5,代表访问第二页的数据,用户自定义返回的条数为5条
 

LimitOffsetPagination

首先我们自定义一个分页器类,继承自LimitOffsetPagination

class MyLimitOffsetPagination(LimitOffsetPagination):
    # url后面跟limit请求参数,
    limit_query_param = 'limit'
    # url后面跟offset请求参数
    offset_query_param = 'offset'
    # 最大限制20条
    max_limit = 20
    # 默认限制3条
    default_limit = 3

之后我们访问url只需要在后面加入?limit=10即可
比如http://127.0.0.1/api/cars/?limit=10代表访问的数据最多展示10条,如果你limit的值>max_limit,那么还是按照max_limit的值来展示数据的条数
比如http://127.0.0.1/api/cars/?offset=1,这里没有limit参数,所以默认展示3条,offset=1代表从数据库列表中提取数据的时候,是从下标1开始提取,比如提取的数据列表是['test1', 'test2', 'test3', 'test4'],本来我们默认提取前3条,但是你加上offset=1后,他是从列表下标为1开始提取,所以最后提取的数据是test2test3test4
 

CursorPagination

游标分页器跟基础分页器用法差不多,只是游标分页的针对下一页数据的url进行了加密
首先我们自定义一个分页器类,继承自CursorPagination

class MyCursorPagination(CursorPagination):
    """
    Cursor 光标分页 性能高,安全
    """
    page_size = 10
    page_size_query_param = "page_size"
    max_page_size = 20
    ordering = '-price'

如果我们视图中使用了排序过滤filter_backends = [OrderingFilter],那么我们在访问url的时候必须携带参数?ordering=需要排序的字段

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166116.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux学习——shell编程之环境变量配置文件

    shell编程之环境变量配置文件一:环境变量配置文件1 shell编程之环境变量配置 变量类型:用户自定义变量(本地变量)环境变量 :定义每个用户的操作环境,如path ps1(提示符)预定义变量位置参数变量

    2022年2月26日
    47
  • Android SDK安装及配置模拟器[通俗易懂]

    Android SDK安装及配置模拟器[通俗易懂]1、下载官方下载地址2、解压

    2022年7月21日
    20
  • springbatch 批处理框架的介绍

    springbatch 批处理框架的介绍springbatch批处理框架的介绍(还在整理中。。。。。。。。有点乱,待更新)SpringBatch是什么?官网中介绍SpringBatchisalightweight,comprehensivebatchframeworkdesignedtoenablethedevelopmentofrobustbatchapplicationsvital…

    2022年5月27日
    74
  • 二进制的权展开式_进制按权展开方法

    二进制的权展开式_进制按权展开方法1.问题描述为什么二进制按权展开就是十进制?按照我们所学到的知识,来举例说明。比如:(1111)2按权展开就是:1×23+1×22+1×21+1×20=15我们得到了15对吧,那么两个问题为什么15这个就是十进制呢?为什么展开后相加就正好等于十进制的15呢?2.问题解答首先来看我们为什么按权展开?(1111)2因为逢二进一所以按权展开就是要这样:1×23+1×22+1×21+1×20由于我们习惯性的把加起来的和等于十进制的15所以我们会误认为,按权展开就是十进制其.

    2022年10月17日
    2
  • sqlplus/as sysdba报错(ora-01422)

    windows下sqlplus/assysdba报ora-12560的终极解决方法

    2022年4月10日
    156
  • PyPDF2读取中文_pdfplumber、pypdf2 常用方法总结

    PyPDF2读取中文_pdfplumber、pypdf2 常用方法总结这两天学习了一些处理PDF文档的方法,网上查找资料的过程中发现很多处理PDF文件的库,多方尝试后推荐两个比较好用的。若处理对象是PDF文档本身,则推荐使用pypdf2,如对PDF文档进行分割,合并,插入等操作.若处理对象是PDF文档中的文本,表格等内容,则推荐使用pdfplumber.pypdf2PdfFileMerger。该类用来合并pdf文件,该类的构…

    2022年6月23日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号