Django-Paginator分页器

调用

1、导入Paginator

1
from django.core.paginator import Paginator

2、创建分页对象

1
2
3
paginator = Paginator(list, 2)  
# 第一个参数是访问数据库返回得到的一个对象
# 第二个参数表示每一页显示几条信息

3、创建单个页面的对象

1
2
page = paginator.page(page_index)
# 参数为页码

属性

paginator对象的属性
  • paginator.count:总数据量
  • paginator.num_pages:分页数
  • paginator.page_range:页码范围
page对象的属性
  • page.has_next():判断是否有下一页
  • page.next_page_number():返回下一页的页码
  • page.has_previous():判断是否有上一页
  • page.previous_page_number():返回上一页的页码

自定义页码控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
skus_page = paginator.page(page)
# todo: 进行页码控制,使页面上最多显示五个页码
# 1.总页数小于等于五页,页面上显示所有页码
# 2.如果当前页是前三页,显示1~5页页码
# 3.如果当前页是后三页,显示后五页
# 4.其他情况显示当前页的前两页、当前页、当前页的后两页
num_pages = paginator.num_pages
if num_pages <= 5:
pages = range(1, num_pages+1)
elif page <= 3:
pages = range(1, 6)
elif num_pages - page <= 2:
pages = range(num_pages-4, num_pages+1)
else:
pages = range(page-2, page+3)