通过谷歌应用引擎和python中的列表进行分页

时间:2013-02-10 23:50:18

标签: python google-app-engine pagination jinja2

我有一份清单。 (该列表来自存储在memcache中的数据库查询,理想情况下我不会再次查询数据库。)

x = [thing1, thing2, thing3, ... thing100]

我正在使用此功能一次生成列表中的前10个项目。

def grouper(page_size, iterable):
        page = []
    for item in iterable:
        page.append(item)
        if len(page) == page_size:
            yield page
            page = []
    yield page

我正在调用函数

group = grouper(10, x)

我将结果提交给我的html,如此

self.render("index.html", x-items = group.next())

在jinja2中我正在遍历group.next()并正确显示列表中的前10个项目。

我的问题是,我在html('next'链接)中添加了什么代码才能让它再次运行该功能,并显示接下来的10个项目?

1 个答案:

答案 0 :(得分:2)

当您查询数据库并且需要分页时,您使用游标。数据存储区和NDB都支持游标。因此,无需先在memcache中保存查询。

但是如果你需要先将它存储在memcache中,你可以使用自己的光标。另请参阅Nick Johnson的这篇博文:http://blog.notdot.net/2010/02/New-features-in-1-3-1-prerelease-Cursors