classPageInfo:def __init__(self,cur_page,totle,per_page=10,show_page=11):try:
self.cur_page= int(cur_page) #当前页码数
exceptException as e:
self.cur_page= 1self.per_page= per_page #每页面显示10条数据
self.show_page = show_page #每页面展示11页
#这里用到内置函数divmod----相当于(a//b,a%b)整除和取模
#总行数 / 每页的行数 a 表示正数部分 b表示余数
a,b =divmod(totle,per_page)ifb:
self.total_page= a + 1
else:
self.total_page=adefget_start(self):return (self.cur_page - 1 ) *self.per_pagedefget_stop(self):return self.cur_page *self.per_pagedefpage(self):
half= int((self.show_page) /2) #当前页码数的前面展示多少依据
#总页数小于show_page == 11
if self.total_page
begin=1stop= self.total_page +1
else:#总页数大于show_page == 11
if self.cur_page -1 < half: #比较依据原因是当前页码小于half时 出现负数页码
begin = 1stop= self.show_page +1
elif self.cur_page + half >self.total_page:#begin = self.cur_page - half #如果当前页减去half的话,页面上的页码数随之减少,即没有显示固定11页
begin = self.total_page - self.show_page +1stop= self.total_page+1
else:
begin=self.cur_page -half
stop= self.cur_page +half+1sli=[]#添加上一页a标签,判断是否是第一页,第一页的话只能跳转到当前页,不是的话当前页减去1 进行跳转
if self.cur_page ==1:#s = "上一页"
s = "
上一页"else:#s = "上一页" %(self.cur_page -1)
s = "
上一页" %(self.cur_page -1)sli.append(s)for num inrange(begin,stop):if num ==self.cur_page:#s = "%s"%(num,num)
s = "
%s"%(num,num)else:#s = " %s" % (num, num)s = "
%s" %(num, num)sli.append(s)#添加下一页a标签,判断是否是最后一页,最后一页只能跳转到当前页,不是的话当前页加上1进行跳转
if self.cur_page ==self.total_page:#s = "下一页"
s = "
下一页"else:#s = "下一页" %(self.cur_page +1)
s = "
下一页" %(self.cur_page +1)sli.append(s)#页面导航整体返到外面
page_str =" ".join(sli)return page_str