博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django实战(20):分页(Pagination)
阅读量:7219 次
发布时间:2019-06-29

本文共 1145 字,大约阅读时间需要 3 分钟。

在上一节我们实现了针对某个产品的订单订阅功能。但是我们可能需要直接在站点上查询所有的订单。显然,随着时间的增长订单会越来越多,所以分页(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函数和模板中如何使用分页器了。

转载地址:http://mrqym.baihongyu.com/

你可能感兴趣的文章
函数的不定长参数
查看>>
转载:一碗牛肉面的思考
查看>>
Story Of Web Background
查看>>
emotion使用笔记
查看>>
Discuz3.4-SSRF-从触发点到构造payload
查看>>
01 jmeter性能测试系列_Jmeter的体系结构
查看>>
linux -- Ubuntu 安装搜狗输入法
查看>>
ns-2 tcp-udp模拟实验
查看>>
『转』古老的IRC命令
查看>>
使用只有头结点的链表实现栈
查看>>
equals方法
查看>>
PreparedStatement/Statement处理insert update等操作时乱码,以及URL
查看>>
博客作业2---线性表
查看>>
Python基础学习笔记
查看>>
看破欧拉函数的奥秘
查看>>
ASP.NET管道
查看>>
2017-5-17 文件异常
查看>>
Linux 常用命令
查看>>
黄聪:抓取网页链接的php类:snoop
查看>>
MD5加密
查看>>