2015-10-17 59 views
0

我試圖創建一個分頁機制來通過查詢來分頁。向前走並不是問題。去上一頁似乎是不平凡的。App引擎數據存儲分頁 - 前一頁

我到目前爲止這是(爲什麼我有一種感覺,它應該是簡單?):

cursor_urlsafe = self.request.get('cursor', None) 
rev = bool(self.request.get('rev', None)) 
cursor = ndb.Cursor(urlsafe=cursor_urlsafe) 
if rev: 
    next_query = Shot.query(Shot.schedule_key == schedule.key).order(Shot.date_created) 
    cursor = cursor.reversed() 
else: 
    next_query = Shot.query(Shot.schedule_key == schedule.key).order(-Shot.date_created) 

shots, next_cursor, more = next_query.fetch_page(PAGE_LENGTH, start_cursor=cursor) 

if rev: 
    shots.sort(key=lambda x: -x.date_created_epoch) 

next_cursor_url_safe = next_cursor.urlsafe() if next_cursor else None 
template_params = { 
    'shots': shots, 
    'next_cursor': next_cursor_url_safe, 
    'prev_cursor': next_cursor_url_safe if cursor_urlsafe else None 
} 

,並在客戶端:

<a href="/schedule/{{ s.id }}?cursor={{ prev_cursor }}&rev=true">Previous</a><br> 
<a href="/schedule/{{ s.id }}?cursor={{ next_cursor }}">Next</a> 

這類作品。唯一的問題是,當用戶「改變方向」(頁面返回)時,它將他帶到他再次訪問的頁面,並且只有在另一次點擊之前才轉到上一頁。

所以,如果點擊,上一個,然後下一個我一直在同一頁面上。

請指教。

回答

0
+0

糾正我,如果我錯了,但感覺像一個主要的設計,如果我需要,以實現一個簡單的分頁功能「採取的策略」失敗: ( – MeLight

+0

你正在處理一個沒有SQL的環境,我會接受谷歌的「設計缺陷」,然而這兩個鏈接都爲你提供了一個解決方案,你必須走出SQL世界,理解發生了什麼。在AWS上查看DynamoDB類似的策略是反向分頁所必需的。請參閱http://stackoverflow.com/questions/14396346/pagination-in-dynamodb –