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>
這類作品。唯一的問題是,當用戶「改變方向」(頁面返回)時,它將他帶到他再次訪問的頁面,並且只有在另一次點擊之前才轉到上一頁。
所以,如果點擊,上一個,然後下一個我一直在同一頁面上。
請指教。
糾正我,如果我錯了,但感覺像一個主要的設計,如果我需要,以實現一個簡單的分頁功能「採取的策略」失敗: ( – MeLight
你正在處理一個沒有SQL的環境,我會接受谷歌的「設計缺陷」,然而這兩個鏈接都爲你提供了一個解決方案,你必須走出SQL世界,理解發生了什麼。在AWS上查看DynamoDB類似的策略是反向分頁所必需的。請參閱http://stackoverflow.com/questions/14396346/pagination-in-dynamodb –