class PageSet:
def __init__(self,current_page,all_pages,base_url,show_data_counts,dispaly_pages=11):
'''
:param current_page: 当前页码
:param all_pages: 总页码
:param show_data_counts: 每页显示数据条数
:param base_url: url地址
:param dispaly_pages: 页码显示数量
'''
#当前页码数据类型判断及转换为int数据类型
try:
self.current_page = int(current_page)
except Exception:
self.current_page = 1
#计算总页码数
a,b = divmod(all_pages, show_data_counts)
if b:
a += 1
self.all_pages = a
self.base_url = base_url
self.show_data_counts = show_data_counts
self.dispaly_pages = dispaly_pages
def start_datas(self):
'''计算当前页起始显示数据'''
return (self.current_page-1) * self.show_data_counts
def end_datas(self):
'''计算当前页结束显示数据'''
return self.current_page * self.show_data_counts
def show_pages(self):
'''页面显示逻辑'''
#获取页码显示半数
dispaly_half_pages = int((self.dispaly_pages-1)/2)
# 如果总页数小于show_page,显示从第一页开始,总页数结尾
if self.all_pages <= self.dispaly_pages:
begin_page = 1
stop_page = self.all_pages + 1
else:
# 如果当前页码小于等于页码显示半数,显示从第一页开始,显示页数结尾
if self.current_page <= dispaly_half_pages:
begin_page = 1
stop_page = self.dispaly_pages + 1
# 如果当前页码小于等于页码显示半数,显示从第一页开始,显示页数结尾
elif self.current_page >= self.all_pages - dispaly_half_pages:
begin_page = self.all_pages - 10
stop_page =self.all_pages + 1
# 显示从当前页减去显示页码半数开始,当前页加上页码显示半数结束
else:
begin_page = self.current_page - dispaly_half_pages
stop_page =self.current_page + dispaly_half_pages + 1
#初始化页码HTML字符串列表
page_list = []
#首页
first_page = "<li><a href ='%s/?c_page=%s'>首页</a></li>" % (self.base_url,1)
page_list.append(first_page)
# 上一页
if self.current_page == 1:
prev_page = "<li><a href ='#'>上一页</a></li>"
else:
prev_page = "<li><a href ='%s/?c_page=%s'>上一页</a></li>" % (self.base_url,self.current_page-1)
page_list.append(prev_page)
#数字页面显示
for i in range(begin_page,stop_page):
if self.current_page == i:
temp = "<li class='active'><a href ='%s/?c_page=%s'> %s </a></li>" %(self.base_url,i,i)
else:
temp = "<li><a href ='%s/?c_page=%s'> %s </a></li>" % (self.base_url,i, i)
page_list.append(temp)
# 下一页
if self.current_page >= self.all_pages:
next_page = "<li><a href ='#'>下一页</a></li>"
else:
next_page = "<li><a href ='%s/?c_page=%s'>下一页</a></li>" % (self.base_url,self.current_page+1)
page_list.append(next_page)
# 末页
over_page = "<li><a href ='%s/?c_page=%s'>末页</a></li>" % (self.base_url, self.all_pages)
page_list.append(over_page)
return ''.join(page_list) #转换为字符串返回