如何在 python mako 中进行分页

How to do pagination in python mako

我刚刚开始使用 python 制作网页。目前我正在使用 Mako 和 CherryPy 创建一个本地服务器来测试我写的任何东西。

我为我的数据库添加了一个搜索页面,它可以产生任意数量的结果,从 0 到很多,所以最好的显示方式是通过分页。我在网上快速浏览了一下,唯一能找到的帮助是这个网页: http://makoframework.com/docs/3.6/learn-more:pagination

问题是我不明白它在显示什么,到目前为止我只使用 Mako 将变量输入 html 和 ${variable} 符号。

我希望更有经验的人可以向我展示并举例说明它是如何工作的,因为我在网上找不到任何例子。

提前致谢!

首先,我希望我们都知道您的示例 link 指向具有相同名称的 PHP 框架站点,Mako

要使分页正常工作,您需要为每个实体实现两个方法(或 table 为简单起见)。在简单的情况下,第一个是 count() returns 个条目数,第二个是 list(page, itemsPerPage) 给定页面的 returns 个条目。

然后你需要决定你喜欢什么样的分页风格。有几种常见的样式。例如。 滑动 样式如下所示:

    [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]

正如您在 link 编辑的页面的模板片段中看到的那样,分页模板需要多个值,例如当前页、同级页、第一页、最后一页等。因此您需要计算这些值,包括条目总数、当前页、每页条目数和分页样式。实现是非常简单的数学运算。

当时我需要这种简单的页面计算,但在 Cheese Shop 却找不到。只有一些复杂的东西试图顺便做很多事情,我没有问。所以我写了 PageCalc, which does such simple calcualtion for couple of pagination styles. There's also CherryPy example app,它使用 Jina2,但如果你愿意,可以很容易地将它切换到 Mako。