classPagination:
def __init__(self,items,getargs=None,url='',pageItemLs=1,maxPageNum=11):''':param items: 数据库查询的数据
:param currenPageNum: 当前页码---curren_page_num
:param pageItemLs: 一页显示多少条数据---page_item_list
:param maxPageNum: 页面最多显示多少页码---max_page_num
:param url: 在哪个页面进行分页---url
:param getargs: 保留url带有get参数---url''' self.url =url
self.items=items
self.page_items_maxunt()
self.page_item_list=pageItemLs
self.curren_page_num=None
#如果最多显示页码大于总页数,那就把总页数赋值给最多显示页码
self.max_page_num= maxPageNum al_page_num > al_page_num'''如果传入的当前页码不是整数,当前页码就直接赋值为1,
如果传入的当前页码小于等于0 ,当前页码就直接赋值为1,
如果传入的当前页码大于数据能分出来的最大页码数,就把当前页码赋值为最大页码数
否则就把传入的当前页码赋值给当前页码''_args(getargs)try:
v= int(self.curren_page_num)if v <= 0:
self.curren_page_num= 1elif v&al_page_num:
self.curren_page_numal_page_numelse:
self.curren_page_num=v
except Exceptionase:
self.curren_page_num= 1def get_args(self,getargs):
result= ''
for k,v ingetargs.items():if k != 'p':ifv:
result+= '&%s=%s' %(k,v)else:
self.curren_page_num=v
self.url_args=result
def get_item(self):'''根据分页生成数据返回
:return:''' returnself.items[self.d]
@property
def total_page_num(self):'''计算总页数
:return:''' total,b =divmod(self.page_items_max,self.page_item_list)
total= total + 1 if b != 0 elsetotalreturntotal
@property
def start(self):'''计算数据切片的起始切片位置'''
return ( self.curren_page_num -1 ) *self.page_item_list
@property
def end(self):'''计算数据切片的结束切片位置'''
return self.curren_page_num *self.page_item_list
def pagenum_range(self):'''动态生成页码
:return:'''#以显示页码数量的一半为临界点
page= self.max_page_num //2
if self.curren_page_num <=page:
#如果当前页码小于临界点,页码的显示就是1 -最大能分出的页码数return range(1,self.max_page_num+1)
#如果(当前页+ page) 要大于 总页码数量, 页码数就显示 (总页数 - 一页最多显示页码数 +1) - (总页数 + 1)if (self.curren_page_num + page) &al_page_num :return al_page_num - self.max_page_num + 1 ,al_page_num +1)
# 页码数就显示 (当前页码数- page) - (当前页 + page + 1)return range(self.curren_page_num - page,self.curren_page_num + page + 1)
def item_list(self,type='http'):'''返回HTML代码
:return:''' ifself.page_items_max:
item= ['
item.append('
首页' %(self.url,self.url_args))if self.curren_page_num == 1:item.append('
上一页')else:item.append('
上一页' % (self.url, self.curren_page_num - 1,self.url_args))for i inself.pagenum_range():if i ==self.curren_page_num:item.append('
%s' %(self.url, i,self.url_args, i))else:item.append('
%s' %(self.url, i,self.url_args, i))if self.curren_page_num =al_page_num:item.append('
下一页')else:item.append('
下一页' % (self.url, self.curren_page_num + 1,self.url_args))item.append('
尾页' %(self.url, al_page_num,self.url_args))elif type== 'ajax':
item.append('
首页')if self.curren_page_num == 1:item.append('
上一页')else:item.append('
上一页' % (self.curren_page_num - 1))for i inself.pagenum_range():if i ==self.curren_page_num:item.append('
%s' %( i, i))else:item.append('
%s' %( i, i))if self.curren_page_num =al_page_num:item.append('
下一页')else:item.append('
下一页' % (self.curren_page_num + 1))item.append('
尾页' %(al_page_num))item.append('')return ''.join(item)else:return ''
本文发布于:2024-02-01 09:48:35,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675211735777.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |