Google App Engineでページング
「Google App Engineでページング | 山本隆の開発日誌」より。
Google App Engineでページングを行う方法
App Engine でページングを行う方法 – Google App Engine – Google Code
Google App Engineの公式サイトより。
「fetch(limit, offset=0)」は時間がかかるために使用しない方がいい。
では、どうすればいいか。基本的な考え方と実装法が紹介されている。
App Engine Recipe – Efficient paging for any query and any model
ページングを行うクラス。使い方も簡単でわかりやすい。
Kayで使用する例
bookmark = request.values.get('bookmark'))
query = PagerQuery(MyModel).filter('foo >', 'bar').order('foo')
prev, results, next = query.fetch(10, bookmark)resultsにはモデルのデータ一覧が、prevとnextにはページがなければNone、あれば文字列が入る。
myapp/views.py
def index(request):
bookmark = request.values.get('bookmark'))
query = PagerQuery(MyModel).filter('foo >', 'bar').order('foo')
prev, results, next = query.fetch(10, bookmark)
return render_to_response('myapp/index.html',
{'prev': prev, 'next': next, 'result': result})
myapp/templates/index.html
{% for model in result -%}
<p>{{model.foo}}</p>
{% endfor -%}{% if prev -%}
<a href="{{url_for('myapp/index', bookmark=prev)}}">前のページ</a>
{% endif -%}
{% if next -%}
<a href="{{url_for('myapp/index', bookmark=next)}}">次のページ</a>{% endif -%}
ソースコードは、moraes / appengine / source — bitbucket.orgからダウンロードできる。