django分页器的用法_MySQL实现数据分页

django分页器的用法_MySQL实现数据分页前言当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示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/165410.html原文链接:https://javaforall.net

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


相关推荐

  • wifi2.4频段怎么设置_怎么修改wifi频段

    wifi2.4频段怎么设置_怎么修改wifi频段在win10系统里,wifi一般会优先选择2.4g频段,一些公共wifi大家都挤在2.4g频段的话,会导致网络质量很大的下降,所以我们可以把wifi改成5hz首选频带,那么win10怎样将wifi变为支持5ghz频段呢,下面小编给大家分享win10将wifi改成5hz首选频带的方法。解决方法:1、点击win10操作系统上的开始菜单图标,在弹出的菜单中,点击设置。2、弹出设置窗口,在设置窗口界面中点…

    2022年10月20日
    5
  • 【Flume】batchSize和transactionCapacity区别

    batchSize是针对Source和Sink提出的一个概念,它用来限制source和sink对event批量处理的。即一次性你可以处理batchSize个event,这个一次性就是指在一个事务中。当你处理的event数量超出了batchSize,那么事务就会提交了。注意,这里有一个隐晦的地方,就是batchSize一定不能大于transactionCapacitytransactionC…

    2022年4月15日
    82
  • 1045 Access denied for user ‘root’@’localhost’ (using password: YES)[通俗易懂]

    1045 Access denied for user ‘root’@’localhost’ (using password: YES)[通俗易懂]MySQL连接错误,使用Navicat连接MySQL出现错误:1045Accessdeniedforuser’root’@’localhost'(usingpassword:YES)解决方法:编辑mysql配置文件my.ini(在mysql的安装目录下,不同电脑可能不一样,参考目录①D:\ProgramFiles\MySQL\MySQLServer5.0\my….

    2022年5月13日
    75
  • java并发之SynchronousQueue实现原理[通俗易懂]

    java并发之SynchronousQueue实现原理[通俗易懂]前言SynchronousQueue是一个比较特别的队列,由于在线程池方面有所应用,为了更好的理解线程池的实现原理,笔者花了些时间学习了一下该队列源码(JDK1.8),此队列源码中充斥着大量的CAS语句,理解起来是有些难度的,为了方便日后回顾,本篇文章会以简洁的图形化方式展示该队列底层的实现原理。SynchronousQueue简单使用经典的生产者-消费者模式,操作流程是这样的:有多个生产者,可以并

    2022年6月22日
    79
  • 稳定性测试怎么做_stata稳定性检验怎么做

    稳定性测试怎么做_stata稳定性检验怎么做稳定性对产品的重要性不言而喻。而作为质量保障,在稳定性测试方面的探索也在不断演化。记得两年前我们做稳定性测试还是基于恒定的压力,7*24小时长时间运行,关注的指标无非是吞吐量TPS的抖动、响应时间的变化趋势,以及各种资源是否泄露。稳定性测试的场景设计简单,和线上实际运行有较大的出入。带来的直接结果是稳定性测试发现的问题比较有限,做完之后仍然没有特别大的信心。图片那稳定性测试究竟该如何做?别人在怎么做?性能测试组今年在这方面做了一些思考和改进,虽然称不上很好的解决方案,但是通过努力比以前的做法还是有不少

    2025年10月14日
    5
  • 解决WIFI无线连接或连接上很慢

    解决WIFI无线连接或连接上很慢

    2021年8月31日
    63

发表回复

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

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