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_urlprevious_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.