首页 > 其他 > 详细

django models分页

时间:2020-03-19 19:17:48      阅读:72      评论:0      收藏:0      [点我收藏+]
 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>

 

 

django models分页

原文:https://www.cnblogs.com/hude/p/12526547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!