ListViewのページ操作
テンプレートに次・前へのリンクを追加します
「ListViewのページ操作」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。
組み込みのページネーション
朗報です。ListViewにページネーションを任せることができます。コードはほとんど書かなくても、Djangoがquerysetを自動的にページへ分割します。🚀
paginate_byを設定する
属性を1つ追加するだけです。paginate_byを設定すると、ListViewに各ページで表示する項目数を指定できます。
class ArticleList(ListView):
model = Article
paginate_by = 10page_obj変数
ページネーションを有効にすると、テンプレートにpage_objが渡されます。これは以前学んだ同じPageオブジェクトで、すぐにループや内容の確認に使えます。
現在のページをループする
テンプレートでpage_objを反復処理し、このページの項目だけを表示します。クエリセットの分割はDjangoがすでに行っています。
{% for article in page_obj %}
{{ article.title }}
{% endfor %}ページ番号を読み取る
ListViewはURLの?page=クエリ文字列からページ番号を取得します。そのため、?page=2へのリンクをクリックすると2ページ目が表示されます。
前のページへのリンクを表示する
has_previousで戻るリンクの表示を制御し、実際に前のページがある場合だけ表示されるようにします。
{% if page_obj.has_previous %}
Prev
{% endif %}前のページにリンクする
そのブロック内でprevious_page_numberを使ってhrefを組み立て、1つ前のページを指すリンクを作成します。
<a href="?page={{ page_obj.previous_page_number }}">Prev</a>次のページへのリンクを表示する
次のページへ進む場合も同じ考え方を使います。次のリンクをhas_nextで囲み、最後のページでは非表示にします。
{% if page_obj.has_next %}
Next
{% endif %}Xページ中Yページを表示する
カウンターを表示して、ユーザーが現在位置を把握できるようにします。numberとpaginatorのnum_pagesを組み合わせて、「Page 2 of 5」のように表示します。
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}カスタムコンテキスト名
もっと分かりやすいループ変数を使いたい場合は、context_object_nameを設定します。Djangoがページのリストに、指定した名前を付けてくれます。
context_object_name = 'articles'まとめて実装する
属性を1つと小さなテンプレートブロックを追加するだけで、前へ、次へ、現在位置のカウンターという完全なページ操作を実装できます。ビューのロジックを書く必要はありません。
クイックチェック
ListViewのテンプレートで、現在のページの項目を表示する必要があります。
まとめ
paginate_byでページネーションを有効にし、page_objをループして、has_previousとhas_nextで制御した前へ・次へリンクを作成しました。ビューのコードはゼロで、すっきりしたリストが完成します。🎉
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「ListViewのページ操作」レッスンは無料ですか?
はい。「ListViewのページ操作」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。
「ListViewのページ操作」で何を学びますか?
テンプレートに次・前へのリンクを追加します ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Django Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ListViewのページ操作」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDjango Academyレッスンでコードを書いて実行できますか?
はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Paginatorクラス
- ListViewのページ操作
- TestCaseとアサーションの記述
- Test ClientとFixtures