Django(十四):分页器

分页器:  属于控制器, 需要前后端传入数据
1. 设定每页显示多少数据 per_counts
2. 从后端获得数据总条目 total_counts
3. 根据12计算总页数 total_page
4. 从前端获取当前页码 current_page
5. 根据14计算当前页码的数据在数据库中的位置 start_item, end_item
6. 数据库中取数据
7. 传入模板中渲染

其他功能:
1. 首页/尾页 front_page/tail_page
2. 前一页/后一页 prev_page/next_page
3. 要显示多少页码 display_pages

自定义分页器:
传入: 1>. total_counst
2>. current_page
3>. per_counts
4>. display_pages

返回: 1>. total_pages
2>. current_page
3>. prev_page
4>. next_page
5>. fron_page
6>. next_page
7>. 当前页的start_item, end_item
特点: 1>. 在一个对象中处理所有信息
2>. 直接将current_page的异常情况处理好

django内置分页器:
from django.core import paginator
主要内置四个类: Paginator: 管理总页数,总数据量,总页码的索引范围,负责找到指定页
:input obj_list, per_counts # django是惰性存储,且有缓存,因此可以直接把数据全部取出
:return .count 数据总量
.num_pages 总页码
.page_range 总页数的索引范围
.page(i) i页的对象,可迭代获取该页面的信息

Page:指定页是否有下一页,获取下一页,是否有上一页,获取上一页,可迭代获取该页的信息,可指向总的页码管理器
input 先生成总的页码管理器,再找到指定的页码
:return has_next() 是否有下一页
next_page_number() 下一页页码
has_previous() 是否有上一页
previous_page_number() 上一页页码
start_index() 开始的下标
end_index() 结束的下标
.paginator 指向页码管理器
获取页对象的错误类型
EmptyPage:
page=paginator.page(12) # error:EmptyPage, 页面小于1或者大于最大页码数抛出异常

PageNotAnInteger
#page=paginator.page("z") # error:PageNotAnInteger, 页码为非整数或者为空时抛出异常
特点: 1. 有两个页码处理对象,一个作为总的页码管理器,一个作为指定页的管理,可互相指向
2. 定义了两个页码错误的类,需要自己定义异常情况下的处理

猜你喜欢

转载自www.cnblogs.com/lancelotxly/p/10872122.html