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からダウンロードできる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です