官方文档
from django.core.paginator import Paginator, EmptyPage
# 创建分页器:每页N条记录
# # 列表页每页商品数据量
# GOODS_LIST_LIMIT = 5
paginator = Paginator(skus, constants.GOODS_LIST_LIMIT)
# 获取对应页码数据
try:
page_skus = paginator.page(page_num)
except EmptyPage:
# 如果page_num不正确,默认给用户404
return http.HttpResponseNotFound('empty page')
# 获取列表页总页数
total_page = paginator.num_pages
分页器:
有时候数据库的数据太多的话所有的数据都展示在同一个页面上,不方便浏览,也不利于管理:
此时就出来了一个叫做分页器的概念:
导入模块:from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
先查询一下所有的书:book_list = Book.object.all()
paginator = Paginator(book_list,10) #每页显示10行数据
paginator.count ------------->总的数据有多少行
paginator.num_pages ---------->得到总的页数
paginator.page_range -----------页码的列表
page1 = paginator.page(1) -----获取到第一页的page对象
page1 可以遍历,,得到的结果就是这个页面上的10条数据
page1.object_list() -------得到第一页的所有数据
---------------------------------------------------------------------------------
page2 = paginator.page(2) ---------拿到第二页
page2.has_next() -------------判断是否有下一页
page2.next_page_number() ---------------下一页的页面
page2.has_previous() ---------判断是否有上一页
page2.previous_page_number() --------------上一页的页码
ps:page不到数据的时候或者page的数据是错误的话会抛错
前端处理数据:
上一页 中间页 下一页
判断booklist有没有上一页
for循环中间页
判断booklist有没有下一页