一、页面展示页码-自定义页码函数
我在工具包文件写,写了一个继承函数
-
首先我们给知道当前用户点击的页数
-
知道我们设置底栏展示页数
#保证循环的次数在规定的展示栏个数,如果设置11,循环的次数保证在11次
class CustomPaginator(Paginator):
def __init__(self, current_page, per_pager_num,*args, **kwargs):
'''
:param current_page: 当前页
:param per_pager_num: 底边栏展示页数
'''
self.current_page = int(current_page)
self.per_pager_num = int(per_pager_num)
super(CustomPaginator, self).__init__(*args, **kwargs)
def page_num_range(self):
#总页数小于实际展示页
if self.num_pages < self.per_pager_num:
return range(1,self.num_pages+1)
#part 当前总展示栏中间点5
part = int(self.per_pager_num//2)
#最小页数为1防止出现负数情况
if self.current_page <= part:
return range(1,self.per_pager_num+1)
#最大页数为实际总页数
if(self.current_page+part)>self.num_pages:
return range(self.num_pages-self.per_pager_num+1,self.num_pages+1)
return range(self.current_page-part,self.current_page+part+1)
view 页面案例
对着里的异常持怀疑态度,提醒自己后期不论什么错误都第一页,设计一个抓全部异常
def index1(request):
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
current_page = request.GET.get('page')
paginator = Paginator(USER_LIST,10)
# per_page: 每页显示条目数量
# count: 数据总个数
# num_pages:总页数
# page_range:总页数的索引范围,如: (1,10),(1,200)
# page: page对象(是否具有上一页,下一页)
try:
posts = CustomPaginator.page(current_page)
# has_next 是否有下一页
# next_page_number 下一页页码
# has_previous 是否有上一页
# previous_page_number 上一页页码
# object_list 分页之后的数据列表
# number 当前页
# paginator paginator对象
except EmptyPage:
posts = paginator.page(paginator.num_pages)
except PageNotAnInteger:
posts = paginator.page(1)
return render(request,'index1.html',{'posts':posts})
-
html
这里想展示选择页更改样式,遵守选中页==循环页 是现实就好