class PageInfo(object):
def __init__(self, current_page, per_page_num, all_count, base_url, page_range=11):""":param current_page: 当前页
:param per_page_num: 每页显示数据条数
:param all_count: 数据库总个数
:param base_url: 页码标签的前缀
:param page_range: 页面最多显示的页码个数""" try:
current_page= int(current_page)
except Exceptionase:
current_page= int(1)
self.current_page=current_page
self.per_page_num=per_page_num
self.all_count=all_count
a, b=divmod(all_count, per_page_num)if b != 0:
self.all_page= a + 1
else:
self.all_page=a
self.base_url=base_url
self.page_range=page_range
def start(self):return (self.current_page - 1) *self.per_page_num
def end(self):return self.current_page *self.per_page_num
def page_str(self):"""在HTML页面中显示页码信息
:return:""" page_list =[]if self.current_page <= 1:
prev= '
上一页'else:
prev= '
上一页' % (self.base_url, self.current_page - 1,)page_list.append(prev)
# 只有 8页if self.all_page <=self.page_range:
start= 1end= self.all_page + 1
else:
# 页数18
if self.current_page > int(self.page_range / 2):
# 当前页:6,7,8,,9,100
if (self.current_page + int(self.page_range / 2)) >self.all_page:
start= self.all_page - self.page_range + 1end= self.all_page + 1
else:
start= self.current_page - int(self.page_range / 2)
end= self.current_page + int(self.page_range / 2) + 1
else:
# 当前页:1,2,3,4,5,
start= 1end= self.page_range + 1
for i inrange(start, end):if self.current_page ==i:
temp= '
%s' %(self.base_url, i, i,)else:temp= '
%s' %(self.base_url, i, i,)page_list.append(temp)if self.current_page >=self.all_page:
nex= '
下一页'else:
nex= '
下一页' % (self.base_url, self.current_page + 1,)page_list.append(nex)return "".join(page_list)