DjangoのGenericViews(汎用ビュー)object_listでページ分割をする

現在このブログは中途半端に移行されていますので、画像が表示されなかったり、レイアウトが崩れたりする可能性があります。
この記事を旧ブログで閲覧するには、以下のURLからご覧ください。
http://blog2.monospace.jp/2006/08/25/django-tips-20060825/

久々の更新になってしまいました。最近ちょっと多忙です。 でも実はDjangoを実践投入できる仕事をもらったので、結構楽しんでます。 今日ちょっとやろうとしたことが解決できたので紹介しておきます。 GenericViewsのobject_listは、簡単にページ分割が実現できるようになってます。 ただ、↓こんな感じのものができなくて困ってました。 前へ 1 2 3 4 5 6 次へ 要するに、全ページへのリンクをはさみたかったんですよね。 はまったのが、ページ分割オプションで使えるようになるpagesという変数がintなので、 これを、range(pages)みたいにしてリストにしたいのですが、Djangoのテンプレート内では これができません。Google GroupのDjango usersを調べてたら発見しました。 Pagination - displaying page numbers rangeを使えるようにするパッチ作ってる人がいるからそれを使うか、 テンプレート内で変数をキャプチャできるものがあるからそれを使うかって感じでした。 パッチ使った方が手軽そうだったんで、そっちでやってみました。 デフォルトフィルターにrange0とrange1を追加するパッチ http://code.djangoproject.com/ticket/1162 range0は0からインデックスを作るもので、range1は1からですね。
{% if has_previous %}前のページへ{% endif %} {% for page_number in pages|range1 %} {% ifnotequal page_number page %} {{ page_num }} {% else %} {{ page_number }} {% endifnotequal %} {% endfor %} {% if has_next %}次のページへ{% endif %}
現在表示中のページはリンクしないようにしたりしてみました。 Djangoバンザイ!
Posted at: 
2006/08/25 04:36:27
0 Comments
0 TrackBacks
Tags: 
Trackback: 
http://blog.monospace.jp/2006/08/25/django-tips-20060825/trackback/

TrackBacks

まだ登録されていません。

Comments

まだ登録されていません。

Add Comment

Add Comment