python分页计算器
PageCalc的Python项目详细描述
pageCalc
pageCalc是一个pythonpagination库。相反地 对于许多自动魔法解决方案来说,这个包只是一个计算器。也就是说,它不会干扰 数据库查询、结果集、集合等等。也不参与模板制作。这个 包装的目的是根据以下内容计算页数:
- 项目总数,
- 每页的项目数,
- 当前页,
- 要显示的页数,
- 分页样式。
该包可用于对为分页列表设计的模型进行分页,以及 处理外部预分页数据源。基本上这个想法和 this Flask snippet。
Paginator.paginate的返回值是具有以下结构的dict:
{'item':{# actual number of items at current page'pageCount':20,# items per page'perPage':20,# total number of items'totalCount':987},'page':{# total number of pages'count':50,# number of current page'current':44,# number of first page'first':1,# number of last page'last':50,# number of next page, None for last page'next':45,# number of previous page, None for first page'previous':43,# displaying window page range'range':[41,42,43,44]}}
更多细节请看 test suite。
分页样式
包提供了两种分页样式。
滑动
除起始页和结束页外,活动页仍位于显示页的中心。显示 页面窗口与活动页面一起前进,使其滑动。
[1] 2 3 4 » → ← « 1 [2] 3 4 » → ← « 2 [3] 4 5 » → ← « 3 [4] 5 6 » → ← « 4 [5] 6 7 » → ← « 4 5 [6] 7 » → ← « 4 5 6 [7]
跳跃
活动页从显示的页窗口的下界移动到上界。当活动页是 窗口的最后一页,下一步使窗口跳到下一页狂怒。
[1] 2 3 4 » → ← « 1 [2] 3 4 » → ← « 1 2 [3] 4 » → ← « 1 2 3 [4] » → ← « [5] 6 7 » → ← « 5 [6] 7 » → ← « 5 6 [7]
使用量
在控制器代码中,在cherrypy示例中,它可以类似于:
classController:@cherrypy.exposedefnews(self,page=1):page=int(page)model=Model()paginator=pagecalc.Paginator(total=model.count(),by=10)data=model.list(page,limit=10)pages=paginator.paginate(page)returntemplate.render(data=data,paginator=pages)
分页jinja2模板可以如下所示:
{% if paginator and paginator.page.count > 1 %} <divid='paginator'> Pages: {% if paginator.page.previous %} <ahref='{{ url(qs = {"page" : paginator.page.previous}) }}'>←</a><ahref='{{ url(qs = {"page" : paginator.page.first}) }}'>«</a> {% endif %} {% for page in paginator.page.range %} <ahref='{{ url(qs = {"page" : page}) }}'{%ifpaginator.page.current ==page%}class='active'{%endif%}> {{ page }} </a> {% endfor %} {% if paginator.page.next %} <ahref='{{ url(qs = {"page" : paginator.page.last}) }}'>»</a><ahref='{{ url(qs = {"page" : paginator.page.next}) }}'>→</a> {% endif %} </div> {% endif %}
示例应用程序
该包包含一个示例应用程序,演示分页和样式。运行它, 输入终端:
virtualenv pagecalctest source pagecalctest/bin/activate pip install pagecalc pip install cherrypy pip install jinja2 python pagecalctest/lib/python2.7/site-packages/pagecalc/example/app.py
然后将浏览器导航到http://127.0.0.1:8008/。注意,最后一条路径可能因 在平台和python版本上。