django自带名为paginator的分页工具
paginator类的作用是将我们分页的数据分割成若干份,当我们实例化一个paginator类的实例时,需要给paginator传入两个参数,第一个参数是数据源 ,可以是一个列表,元祖,以及查询结果集第二个参数需要传入一个整数,表示每页显示数据条数
paginator类中有三个常用的属性,分别是:
count :表示所有页面的对象总数
num_pages:表示页面总数
page_range:下表从1开始的页数范围迭代器
Page对象:
Paginator类提供一个page(number)函数,该函数返回就是一个Page对象,参数number表示第几个分页,
如果number=1,那么page()返回的对象时第一分页的Page对象,在前端页面中显示数据,我们主要的操作都是基于Page
Page对象的
books = paginatorpage(1)
if request.method == "GET":
# 获取 url 后面的 page 参数的值, 首页不显示 page 参数, 默认值是 1
page = request.GET.get('page')
try:
books = paginator.page(page)
# 注意捕获异常
except PageNotAnInteger:
# 如果请求的页数不是整数, 返回第一页。
books = paginator.page(1)
except InvalidPage:
# 如果请求的页数不存在, 重定向页面
return HttpResponse('找不到页面的内容')
except EmptyPage:
# 如果请求的页数不在合法的页数范围内,返回结果的最后一页。
books = paginator.page(paginator.num_pages)