2013-02-10 49 views
0

我有一個列表。通過谷歌應用程序引擎和Python中的列表分頁

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('下一個'鏈接)來讓它再次運行該函數,並顯示接下來的10個項目?

回答

2

當您查詢數據庫並且需要分頁時,可以使用遊標。數據存儲區和NDB都支持遊標。因此,不需要首先將查詢保存在memcache中。

但是,如果您需要先將其存儲在內存緩存中,則可以使用自己的遊標。另請參閱Nick Johnson的博客文章:http://blog.notdot.net/2010/02/New-features-in-1-3-1-prerelease-Cursors

+0

如何在使用memcache時創建自己的光標? – bzudo 2013-02-13 20:27:46

+0

當您獲取查詢的結果時,您會收到一個包含查詢結果的列表。光標是列表中的位置,可以保存在會話中。 – voscausa 2013-02-13 23:05:27