分页器要导入的包
from django.core.paginator import Paginator
Paginator 就是分页器导入的模块
from django.core.paginator import EmptyPage
EmptyPage 是一个错误异常,下面会用到,避免页码被输入无效数字导致的异常
分页器的常用方法
paginator = Paginator(bks, 7) #Paginator 添加所有返回的数据对象,和每页展示多少数据的int参数
paginator.count # 数据页数
paginator.num_pages # 按照上面7条数据分后的总页数
paginator.page_range # 页码的列表
-----------------------------------------------------------------------------
page1 = paginator.page(1) # 获取第一页的数据对象
for i in page1: #遍历page1的所有数据,效果和 object_list 一样,只不过object_list是列表形式
print(i)
page1.object_list #page1的所有数据 列表形式
--------------------------------------------------------------------------------
page1.has_next() #是否有下一页
page1.has_other_pages() #是否有下一页或者上一页
page1.has_previous() #是否有上一页
page1.next_page_number() #获取下一页页码 和 has_next一起用
page1.previous_page_number() #获取下一页页码 和 has_previous一起用
用分页器分页显示数据的数据
先利用models.object.bulk_create()进行批量插入数据
bk_list=[]
for i in range(1,100):
bk = models.test.objects.create(name="python-%i"%(i),price=i,)
bk_list.append(bk)
try:
#不用try会提示primary_key重复,不知道原因在哪里,数据可以正常插入
models.test.objects.bulk_create(bk_list)
except Exception:
pass
效果图
分页展示数据
用分页器展示下面的选择页数
效果图
用分页器展示下面的选择页数添加选中的页数底色添加效果
给选中的当前页数添加class ="active"就行.
效果图
用分页器对于上一页 下一页的条件设定
对于上一页 下一页 要实现 分别会进行页数加减,但是也要实现第一页的时候点击上一页无效,最后一页的时候点击下一页无效
页数加减,可以用蒙版语法的过滤器add实现 上一页就add:-1,下一页就add:1,也可以使用当前页的对象的next_page_number 和previous_page_number方法
用分页器只展示11页数据,其他多余的隐藏动态显示
效果展示