2012年12月5日水曜日

Djangoで、ページネーション(ページ送り)「django-pagination」

Django(1.4.2)で、ページネーション(ページ送り)「django-pagination」です。ドキュメントに紹介されているものは、さすがに簡素なので、別のものを試してみたくなってしまいました。というわけで、パッケージとして提供されているdjango-paginationです。

これが、最高に素晴らしいのです。何が素晴らしいって、ビューでは、対象データを全件取得する指定をしていても、テンプレート部ではレイジーローディング(lazy loading)によって、実際には、該当表示分のデータのみが取得される点です。ソースも簡潔になり、まさに感動です。

/polls/views.py
def index(request):
    polls = Poll.objects.all()
    return render_to_response('polls/index.html',{'polls': polls})
/templates/polls/index.html
{% if polls %}
    {% autopaginate polls 10 %}
    {% paginate %}
    {% for poll in polls %}
        {{ poll.question }}
    {% endfor %}
    {% paginate %}
{% endif %}
実際に設定してみたサイトがこちら





参考サイト
Django-paginationを使用する(Ponsukeのプログラミング日記さん)
django-pagination便利だね(偏った言語信者の垂れ流しさん)
django-pagination(Google Project Hosting)
Using Django-Pagination(Eric Florenzano's Blog)

0 件のコメント:

コメントを投稿