python 分页器
class Pagination(object):
def __init__(self,current_page,total_count,url_prefix,per_page=10,show_page=9):
'''
查看的每一页的数量
'''
self.per_page = per_page
self.url_prefix = url_prefix
'''
全部数据需要多少页
'''
total_page,more = divmod(total_count,per_page)
if more:total_page +=1
self.total_page = total_page
'''
页码必须是大于0的数
'''
if current_page < 1:current_page =1
'''
如果输入的是没有的页码全部等于1
'''
try:current_page =int(current_page)
except Exception as e:current_page = 1
'''
如果访问的页码数超过了总页码数 默认显示最后一页
'''
current_page = total_page if current_page > total_page else current_page
self.current_page = current_page
'''
一个页码最多展示多少个数据'
'''
self.show_page = show_page
'''
每一边展示一半的数据
'''
self.half_show_page = show_page // 2
@property
def start_page(self):
'''
查去页码对应的数据开始的位置
'''
return self.per_page * (self.current_page - 1)
@property
def end_page(self):
'''
查去页码对应的数据结束的位置
'''
return self.per_page * self.current_page
def page_html(self):
'''
1.如果总页面数小于你要显示的页码数
开始页面是1 结束是总页面
2.如果左边小于1了 页面就不用向后面继续减了
3.如果右边大于总页面了 页面就不用向前面继续加了
'''
if self.total_page < self.show_page:
show_page_start = 1
show_page_end = self.total_page
elif self.current_page - self.half_show_page < 1:
show_page_start = 1
show_page_end = self.show_page
elif self.current_page + self.half_show_page > self.total_page:
show_page_end = self.total_page
show_page_start = self.total_page - self.show_page + 1
else:
show_page_start = self.current_page - self.half_show_page
show_page_end = self.current_page + self.half_show_page
page_list = []
page_list.append('<nav aria-label="Page navigation"><ul class="pagination">')
page_list.append('<li><a href="{}?page=1">首页</a></li>'.format(self.url_prefix))
if self.current_page -1 <1:
page_list.append('<li class="disabled"><a href="{}?page={}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'.format(self.url_prefix,self.current_page-1))
else:
page_list.append('<li><a href="{}?page={}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'.format(self.url_prefix,self.current_page-1))
for i in range(show_page_start,show_page_end+1):
if self.current_page == i:
x = '<li class="active"><a href="{0}?page={1}">{1}</a></li>'.format(self.url_prefix, i)
else:
x = '<li><a href="{0}?page={1}">{1}</a></li>'.format(self.url_prefix,i)
page_list.append(x)
if self.current_page +1 >self.total_page:
page_list.append('<li class="disabled"><a href="{}?page={}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'.format(self.url_prefix, self.current_page + 1))
else:
page_list.append('<li><a href="{}?page={}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>'.format(self.url_prefix, self.current_page + 1))
page_list.append('<li><a href="{}?page={}">尾页</a></li>'.format(self.url_prefix,self.total_page))
page_list.append('</ul></nav>')
page_html = ''.join(page_list)
return page_html
1.实例化对象传递 必须要传:当前的页码数,总数据个数,url 默认传参:每一页展示的数据个数,展示最大的页码
2.切面截取展示数据个数 调用方法
3.调用方法获取html页面 boostrap页面
(路由未定义)

浙公网安备 33010602011771号