python分页计算器

PageCalc的Python项目详细描述


https://badge.fury.io/py/PageCalc.png

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版本上。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?