Django2.1——内置分页器

官方文档参考

Python提供了内置分页类,里面封装了一些属性和方法,大大简化了我们自定义的时间和精力,这个类位于django/core/paginator.py。

  • 首先导包:

from django.core.paginator import Paginator
  • 例子:

>>> from django.core.paginator import Paginator
>>> objects = ['john', 'paul', 'george', 'ringo']
>>> p = Paginator(objects, 2)  #实例化

>>> p.count  #总共数据量
4
>>> p.num_pages  #总页数
2
>>> type(p.page_range)
<class 'range_iterator'>
>>> p.page_range  #页码范围
range(1, 3)

>>> page1 = p.page(1)  #第一页对象
>>> page1
<Page 1 of 2>
>>> page1.object_list   #第一页数据
['john', 'paul']

>>> page2 = p.page(2)
>>> page2.object_list
['george', 'ringo']
>>> page2.has_next()   #是否下一页
False
>>> page2.has_previous()  #是否有下一页
True
>>> page2.has_other_pages()  #是否有其他页
True
>>> page2.next_page_number()  #返回下一页页码
Traceback (most recent call last):
...
EmptyPage: That page contains no results
>>> page2.previous_page_number()  #返回前一页页码
1
>>> page2.start_index() # The 1-based index of the first item on this page
3
>>> page2.end_index() # The 1-based index of the last item on this page
4

>>> p.page(0)
Traceback (most recent call last):
...
EmptyPage: That page number is less than 1
>>> p.page(3)
Traceback (most recent call last):
...
EmptyPage: That page contains no results
  • 总结:
  1. 实例化有两个参数,第一个参数是一个可迭代对象,即一个list或tuple或Queryset对象或拥有count\__len__()方法。第二个参数是每页的数据量,必须是整数。
  2. 实例化对象的方法 p.get_page(page) 返回指定页的数据 ,若page不是int,返回第一页,若页码超出范围或为负数,返回最后一页;p.page(page)返回指定页的数据 ,若page不是int或超出范围,会抛出 InvalidPage异常。
  3. 实例化对象的属性  count、num_page、page_range;
  4. 页码对象(P)的方法 has_next()、has_previous()、has_other_pages()、next_page_number()、previous_page_number()、start_index()、end_index();
  5. 页码对象(P)的属性 object_list 、number (返回当前页的页码)、paginator(返回实例化对象)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值