python数据库分页

阅读: 评论:0

python数据库分页

python数据库分页

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_max&#unt()

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_num&#al_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= ['

  • ',]if type == 'http':

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小时内删除。

标签:分页   数据库   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23