Django实战(20):分页(Pagination)
在上一节我们实现了针对某个产品的订单订阅功能。但是我们可能需要直接在站点上查询所有的订单。显然,随着时间的增长订单会越来越多,所以分页(Pagination)是个好办法:每次只显示一部分订单。
分页是Web应用常用的手法,Django提供了一个分页器类Paginator(django.core.paginator.Paginator),可以很容易的实现分页的功能。该类有两个构造参数,一个是数据的集合,另一个是每页放多少条数据。Paginator的基本使用如下:
$python manage.py shell
>>> from django.core.paginator import Paginator
>>> objects = ['john', 'paul', 'george', 'ringo']
>>> p = Paginator(objects, 2) #每页两条数据的一个分页器
>>> p.count #数据总数
4
>>> p.num_pages #总页数
2
>>>p.page_range #页码的列表
[1, 2]
>>> page1 = p.page(1) #第1页
>>> page1
<Page 1 of 2>
>>> page1.object_list #第1页的数据
['john', 'paul']
>>> page2 = p.page(2)
>>> page2.object_list #第2页的数据
['george', 'ringo']
>>> page2.has_next() #是否有后一页
False
>>> page2.has_previous() #是否有前一页
True
>>> page2.has_other_pages() #是否有其他页
True
>>> page2.next_page_number() #后一页的页码
3
>>> page2.previous_page_number() #前一页的页码
1
>>> page2.start_index() # 本页第一条记录的序数(从1开始)
3
>>> page2.end_index() # 本页最后录一条记录的序数(从1开始)
4
>>> p.page(0) #错误的页,抛出异常
...EmptyPage: That page number is less than 1
>>> p.page(3) #错误的页,抛出异常
...EmptyPage: That page contains no results
其实前面scaffold生成的内容里面就已经包含了分页的功能,相信有了对Paginator的了解,你自己就可以看懂在view函数和模板中如何使用分页器了。
Django实战(20):分页(Pagination)相关推荐
- Django实战教程 分页列表
当用户登录成功后,首先看到的是他自己之前提交的任务列表,本篇将实现该页面. 视图(views.py)里定义如下: from django.core.paginator import Paginator ...
- Django rest framework之限流Throttling、内置过滤功能及第三方过滤功能及分页Pagination
文章目录 1.限流Throttling 1.1.自定义频率类 1.1.1.编写频率类 1.1.2.全局使用 1.1.3.局部使用 1.2.内置频率类 1.2.1.根据用户ip限制 1.2.2.限制匿名 ...
- 《Django实战系列》
这个实战系列暂时就告一段落了,时间和能力的关系,有些地方写的不够清楚明白,代码也没有整理出来.未尽事宜将在以后逐步补全. 希望通过这个系列,你能够掌握使用Django开发一个web应用的基本过程.现在 ...
- django与vue分页
后端django进行自定义分页 1.编写自定义配置文件 from rest_framework.pagination import LimitOffsetPaginationclass LimitPa ...
- Django实战技巧(2)-git代码仓分支管理技巧
Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...
- django之快速分页
本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用. 基本知识点: Django提供了数据分页的类,这些类被定义在 ...
- 《智能对话机器人开发实战20讲》--学习笔记--AIML基础功能拓展-与互联网的集成
一.学习笔记 环境要求: aiml bs4 语料库: tuling.aiml search_web.aiml <that>WHICH SEARCH ENGINE WOULD YOU LIK ...
- Django 搜索结果分页的实现 以及点击下一页搜索条件丢失可能的原因分析
1.Django 搜索结果分页的实现 在这里我们用django自带的分页模块来实现 这个paginator对象中带有如下属性: #per_page:每页显示条目数量 #count:数据总个数 #num ...
- Django的列表分页
使用Django的Paginator分页 前后端分离 导包 from django.core.paginator import Paginator 准备数据测试 data_list = [1, 2, ...
- 排序与分页Pagination
排序 对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序. 使用方法: 在类视图中设置filter_backends,使用re ...
最新文章
- Mysql 字符串分隔
- Java程序员校招蚂蚁金服,mysql培训考试
- AppSettings和ConnectionStrings的使用。
- 【PC工具】智能抠图软件,绿色免安装抠图神奇抠图工具
- Java中设计模式之生产者消费者模式-3
- Buuctf(PWN)ciscn_2019_c_1
- 数据存储四种常见方式
- 拓扑排序 确定比赛名次
- spring之Bean的生命周期
- STL的基本函数笔记
- 魔乐科技 oracle 视频,MLDN魔乐科技JAVA+Oracle数据库视频课程
- 物联lot是什么意思_什么是IOT物联网技术
- 阿帕奇服务器配置站点,Apache的基本服务器配置
- 打孔式计算机,矩阵式打孔计算机3005-D型
- html标签和css的语法web的一些知识汇总
- 云原生的年代service mesh不止Istio,还有另一个选择-Kuma
- 倡议书格式范文_倡议书的格式及范文
- 新浪短链接生成器 最新新浪短网址短链接在线生成器推荐
- 2021 最新 Win10 MySQL 安装教程
- 贷款那些事之还款方式等额本息(一)
热门文章
- 【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
- 【Java 虚拟机原理】Class 字节码二进制文件分析 七 ( 局部变量表分析 )
- 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
- 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )
- 【组合数学】非降路径问题 ( 限制条件的非降路径数 )
- 万众期待的kintone开发账号免费开放申请啦!
- python 获取子目录下的所有文件的路径
- MySQL数据库 高级查询(一)
- AngularJS 深入理解 $scope 转载▼
- Ubuntu常见问题配置