在上一节我们实现了针对某个产品的订单订阅功能。但是我们可能需要直接在站点上查询所有的订单。显然,随着时间的增长订单会越来越多,所以分页(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)相关推荐

  1. Django实战教程 分页列表

    当用户登录成功后,首先看到的是他自己之前提交的任务列表,本篇将实现该页面. 视图(views.py)里定义如下: from django.core.paginator import Paginator ...

  2. 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.限制匿名 ...

  3. 《Django实战系列》

    这个实战系列暂时就告一段落了,时间和能力的关系,有些地方写的不够清楚明白,代码也没有整理出来.未尽事宜将在以后逐步补全. 希望通过这个系列,你能够掌握使用Django开发一个web应用的基本过程.现在 ...

  4. django与vue分页

    后端django进行自定义分页 1.编写自定义配置文件 from rest_framework.pagination import LimitOffsetPaginationclass LimitPa ...

  5. Django实战技巧(2)-git代码仓分支管理技巧

    Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...

  6. django之快速分页

    本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用. 基本知识点: Django提供了数据分页的类,这些类被定义在 ...

  7. 《智能对话机器人开发实战20讲》--学习笔记--AIML基础功能拓展-与互联网的集成

    一.学习笔记 环境要求: aiml bs4 语料库: tuling.aiml search_web.aiml <that>WHICH SEARCH ENGINE WOULD YOU LIK ...

  8. Django 搜索结果分页的实现 以及点击下一页搜索条件丢失可能的原因分析

    1.Django 搜索结果分页的实现 在这里我们用django自带的分页模块来实现 这个paginator对象中带有如下属性: #per_page:每页显示条目数量 #count:数据总个数 #num ...

  9. Django的列表分页

    使用Django的Paginator分页 前后端分离 导包 from django.core.paginator import Paginator 准备数据测试 data_list = [1, 2, ...

  10. 排序与分页Pagination

    排序 对于列表数据,REST framework提供了OrderingFilter过滤器来帮助我们快速指明数据按照指定字段进行排序. 使用方法: 在类视图中设置filter_backends,使用re ...

最新文章

  1. Mysql 字符串分隔
  2. Java程序员校招蚂蚁金服,mysql培训考试
  3. AppSettings和ConnectionStrings的使用。
  4. 【PC工具】智能抠图软件,绿色免安装抠图神奇抠图工具
  5. Java中设计模式之生产者消费者模式-3
  6. Buuctf(PWN)ciscn_2019_c_1
  7. 数据存储四种常见方式
  8. 拓扑排序 确定比赛名次
  9. spring之Bean的生命周期
  10. STL的基本函数笔记
  11. 魔乐科技 oracle 视频,MLDN魔乐科技JAVA+Oracle数据库视频课程
  12. 物联lot是什么意思_什么是IOT物联网技术
  13. 阿帕奇服务器配置站点,Apache的基本服务器配置
  14. 打孔式计算机,矩阵式打孔计算机3005-D型
  15. html标签和css的语法web的一些知识汇总
  16. 云原生的年代service mesh不止Istio,还有另一个选择-Kuma
  17. 倡议书格式范文_倡议书的格式及范文
  18. 新浪短链接生成器 最新新浪短网址短链接在线生成器推荐
  19. 2021 最新 Win10 MySQL 安装教程
  20. 贷款那些事之还款方式等额本息(一)

热门文章

  1. 【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
  2. 【Java 虚拟机原理】Class 字节码二进制文件分析 七 ( 局部变量表分析 )
  3. 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
  4. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )
  5. 【组合数学】非降路径问题 ( 限制条件的非降路径数 )
  6. 万众期待的kintone开发账号免费开放申请啦!
  7. python 获取子目录下的所有文件的路径
  8. MySQL数据库 高级查询(一)
  9. AngularJS 深入理解 $scope 转载▼
  10. Ubuntu常见问题配置