1 class PageInfo(object): 2 3 def __init__(self,current_page,all_count,per_page,base_url,show_page=11): 4 """ 5 6 :param current_page: 7 :param all_count: 数据库总行数 8 :param per_page: 每页显示函数 9 :param ‘/base_url: ‘/custom.html‘ 新增标签的url 10 :return: 11 """ 12 try: 13 self.current_page = int(current_page) 14 except Exception as e: 15 self.current_page = 1 16 self.per_page = per_page 17 18 a,b = divmod(all_count,per_page) 19 if b: 20 a = a +1 21 self.all_pager = a 22 self.show_page = show_page 23 self.base_url = base_url 24 #算出需要显示的总页数all_pager 25 26 27 def start(self): 28 return (self.current_page-1) * self.per_page 29 30 def end(self): 31 return self.current_page * self.per_page 32 33 34 def pager(self): 35 # v = "<a href=‘/custom.html?page=1‘>1</a><a href=‘/custom.html?page=2‘>2</a>" 36 # return v 37 page_list = [] 38 39 half = int((self.show_page-1)/2) 40 41 #算出begin,stop 42 # 如果数据总页数 < 11 43 if self.all_pager < self.show_page: 44 begin = 1 45 stop = self.all_pager + 1 46 # 如果数据总页数 > 11 47 else: 48 # 如果当前页 <=5,永远显示1,11 49 if self.current_page <= half: 50 begin = 1 51 stop = self.show_page + 1 52 else: 53 if self.current_page + half > self.all_pager: 54 #如果当前页离最后一页<5,stop为最后一页页码 55 begin = self.all_pager - self.show_page + 1 56 stop = self.all_pager + 1 57 else: 58 begin = self.current_page - half 59 stop = self.current_page + half + 1 60 61 #通过后台添加标签 62 if self.current_page <= 1: 63 #如果到首页的话,上一页按钮链接失效 64 prev = "<li><a href=‘#‘>上一页</a></li>" 65 else: 66 prev = "<li><a href=‘%s?page=%s‘>上一页</a></li>" %(self.base_url,self.current_page-1,) 67 page_list.append(prev) 68 69 for i in range(begin,stop): 70 #通过begin,stop 生成a标签页码 71 if i == self.current_page: 72 #标记当前页的页码 73 temp = "<li class=‘active‘><a href=‘%s?page=%s‘>%s</a></li>" %(self.base_url,i,i,) 74 else: 75 temp = "<li><a href=‘%s?page=%s‘>%s</a></li>" %(self.base_url,i,i,) 76 page_list.append(temp) 77 78 if self.current_page >= self.all_pager: 79 # 如果到尾页的话,下一页按钮链接失效 80 nex = "<li><a href=‘#‘>下一页</a></li>" 81 else: 82 nex = "<li><a href=‘%s?page=%s‘>下一页</a></li>" %(self.base_url,self.current_page+1,) 83 page_list.append(nex) 84 85 86 return ‘‘.join(page_list)
html代码:(custom.html)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css" /> 7 </head> 8 <body> 9 <h1>用户列表</h1> 10 <ul> 11 {% for row in user_list %} 12 <li>{{ row.name }}</li> 13 {% endfor %} 14 </ul> 15 16 <nav aria-label="Page navigation"> 17 <ul class="pagination"> 18 {{ page_info.pager|safe }} 19 </ul> 20 </nav> 21 </body> 22 </html>
原文:https://www.cnblogs.com/hude/p/12526547.html