1、定义分页类

class Pagination(object):
'''
分页类
参数:
per_page:每页数量
total_data:总数目
cur_page:当前页。
用法:(flask,html中自定义css)
py:
page = int(request.args.get("page",1)) #获取args参数'page'
per_page = 50 #每页的数量
dsubAll = query_db("SELECT COUNT(id) AS C FROM dsub",one=True)["C"] #总数目
pages = Pagination(cur_page=page,per_page=per_page,total_data=dsubAll) #分页类
dsub = query_db("SELECT * FROM dsub LIMIT ?,?",(pages.offset,pages.limit)) #取offset与limit进行分页
html:
<div>{{ pages.get_html() | safe }}</div>
'''
def __init__(self,per_page=20,total_data=20,cur_page=1):
import math
self.size = per_page
self.data_count = total_data
self.page_current = int(cur_page)
self.page_max = int(math.ceil(self.data_count * 0.1 * 10 / self.size )) self.page_current = 1 if self.page_current < 1 else self.page_current
self.page_current = self.page_max if self.page_current > self.page_max else self.page_current self.offset = ( self.page_current - 1) * self.size
self.limit = self.size #判断url中是否有其他参数,以及是否已有page参数
_fullpath = web.ctx.fullpath
if "?" in _fullpath:
if "page" in _fullpath:
self.url = _fullpath.split("page")[0]
else:
self.url = "{}&".format(_fullpath)
else:
self.url = "{}?".format(_fullpath) def get_html(self):
self.page_pre = self.page_current - 1
self.page_next = self.page_current + 1
if self.page_max in (0,1) :
html = '''
<ul>
<li><a>首页</a></li>
<li><a>上一页</a></li>
<li><a>下一页</a></li>
<li><a>尾页</a></li>
</ul>
'''
elif self.page_current <= 1:
html = '''
<ul>
<li><a>首页</a></li>
<li><a>上一页</a></li>
<li><a href="{self.url}page={self.page_next}">下一页</a></li>
<li><a href="{self.url}page={self.page_max}">尾页</a></li>
</ul>
'''.format(self=self)
elif self.page_current >= self.page_max:
html = '''
<ul>
<li><a href="{self.url}page=1">首页</a></li>
<li><a href="{self.url}page={self.page_pre}">上一页</a></li>
<li><a>下一页</a></li>
<li><a>尾页</a></li>
</ul>
'''.format(self=self)
else:
html = '''
<ul>
<li><a href="{self.url}page=1">首页</a></li>
<li><a href="{self.url}page={self.page_pre}">上一页</a></li>
<li><a href="{self.url}page={self.page_next}">下一页</a></li>
<li><a href="{self.url}page={self.page_max}">尾页</a></li>
</ul>
'''.format(self=self)
banner = '''
<ul>
<li>
<a>第 <code>{self.page_current}</code> 页</a>
</li>
<li>
<a>共 <code>{self.page_max}</code> 页</a>
</li>
</ul>
'''.format(self=self)
html = '<div class="pagination">{}</div>'.format(html + banner) if self.data_count > self.size:
return html
else:
return ""

2、用法

        i = web.input()
page = i.get("page",1) pageSize = 20
notifyAll = len(list(db.select("team_notify",where="status='doing'")))
notifyPage = conf.Pagination(pageSize,notifyAll,page) notifies = db.select("team_notify",where="status='doing'",order="expressTime DESC",limit=pageSize,offset=notifyPage.offset)

3、效果

最新文章

  1. iOS---基于对Sqlilte3的二次包装的第三次包装---&gt;JKDBModel ,一个好用的离线缓存库
  2. Spring MVC 原理小结
  3. IE10、IE11 User-Agent 网站无法写入Cookie 问题[转]
  4. 如何设置a标签的宽高,如何使a标签的文字垂直居中
  5. dojo使用笔记: 自定义ConfirmDialog
  6. centos5.4_x64 red5 1.0安装部署
  7. 实现自己的cp命令
  8. jQuery Ajax 的 load()方式
  9. ORACLE SQL单行函数(二)【weber出品必属精品】
  10. ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]
  11. Grails笔记一:windows8.1操作系统cmd下grails命令无效
  12. 在Ubuntu14.04上配置jdk环境
  13. 引擎设计跟踪(九.14.3.3) Deferred shading的一些小细节
  14. 2017湘潭大学邀请赛E题(贪心)
  15. UVALive 8519 Arrangement for Contests 2017西安区域赛H 贪心+线段树优化
  16. Camera插件推荐,解锁电影大师级视角控制
  17. 20155227《网络对抗》Exp8 Web基础
  18. 转:无监督特征学习——Unsupervised feature learning and deep learning
  19. 自然语言交流系统 phxnet团队 创新实训 项目博客 (三)
  20. [省选模拟]array

热门文章

  1. STL序列式容器使用注意、概念总结
  2. vue学习笔记(二) ---- vue实例的生命周期
  3. 环形链表I、II(含代码以及证明)
  4. JAVA虚拟机14 类加载器
  5. 远程控制 todesk
  6. selenium结合tenacity的retry实现验证码失败重试
  7. 有趣的python库-tkinter
  8. JZOJ 3432. 【GDOI2014模拟】服务器
  9. 代码随想录算法训练营day02 | leetcode 977/209/59
  10. el-dialog中中使用echarts