Paginator
概述
Paginator是一个分页对象,它总是会依赖于某个数据源,不会凭空出现。一般在 d.get_data 被调用的时候,会自动产生一个分页对象,然后再调用 d.get_paginator 获得这个分页对象。
分页对象,除了包含基本的分页信息之外,也可以直接被 for
之类的语法调用,从而获得其当前页内的实际数据。比如下面代码,是获得分页对象上,当前页的日志列表。
for post in paginator
h2= post.title
.content= post.content
属性
total_count
分页对象所针对的数据的总条目录,比如针对posts list的,则表示这个list内有多少篇文章。
per_page
每页多少条目
pages / total_pages
当前也分页对象总共分成了多少页
page
当前的页码
next_page
下页的页码
previous_page
上一页的页码
has_pre / has_previous
是否有上一页的存在
has_next
是否有下一页的存在
pre_url / previous_url
上一页对应的URL
也等同于 pre_page_url
和previous_page_url
两个属性。
next_url / next_page_url
下一页对应的URL
page_numbers
一个页码的list (总数不超过10个),每个元素是整数或者None: 如果是整数,表示对应的页码;如果是None,则表示由于页码数过多,中间省略掉了一些页码。
具体参考本分下面的 get_page_numbers
函数。
set_default_max_page_numbers
默认调用 pager_numbers 返回的是10个数据(不是10页),如果需要设定这个值(默认为10),可以调用这个函数。但传入的值不能小余3或者大于50.
函数命令
get_page_url
接受参数: <page>
作用: 根据输入的页码(整数)或者对应的页码的URL
get_page_numbers
接受参数: <max_count=10>
获得(可见)页码的list,形如 [1, 2, 3, None, 9]
;作用是不超过max_count
的前提下,获得页码的列表,数据类型为list,每个元素是整数或者None,整数表示页码,None表示此处省略,通常是因为页码数太多,允许呈现的数量又相对有限。
注意: 如果要遍历所有的页码,使用range(1, paginator.pages+1)
,而不是get_page_numbers.