Django实战(20):分页(Pagination)
来源:互联网 发布:会读字的软件 编辑:程序博客网 时间:2024/06/05 01:48
在上一节我们实现了针对某个产品的订单订阅功能。但是我们可能需要直接在站点上查询所有的订单。显然,随着时间的增长订单会越来越多,所以分页(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-restframework25 Pagination(分页)
- Django 分页 django-pagination
- Django Pagination分页器
- django-pagination分页
- Django 分页插件:django-pagination
- Django 分页插件:django-pagination .
- Django 分页插件:django-pagination .
- django分页技术django-pagination和Paginator(基础篇)
- django-pagination分页的使用
- django实现分页(pure-pagination)
- Django 的分页插件 django-pagination 使用
- django-pure-pagination分页功能的实现
- django-pagination---七步教你实现Django网站列表自动分页
- django-pagination---七步教你实现Django网站列表自动分页
- 【Django插件使用】django-pagination实现页面分页功能
- django学习——用django-pure-pagination进行分页
- django插件-dj-pagination简单设置实现分页(甚至不用在view上写paginate)
- c# lock (obj) 与 lock (this) 区别
- 能否始终保持如初学者般的热情、专注,决定了在做某件事时能走多远,能做多好。
- 第三周项目4:穷举法解决组合问题
- 剑指offer-复杂链表的复制
- Android Studio如何使用Git提交代码到GitHub和OsChina并解决冲突
- Django实战(20):分页(Pagination)
- Array--List--ArrayList 三者的区别(一)——引言篇
- 多线程 : ThreadLocal 实现线程间共享变量隔离例子
- Cocos2d-x客户端资源加密
- 310. Minimum Height Trees
- django-pagination---七步教你实现Django网站列表自动分页
- [LeetCode]101. Symmetric Tree
- Python中os.path的妙用
- 如何部署Python Web应用:记录一次Heroku部署完整过程