Django Academy · レッスン

ListViewのページ操作

テンプレートに次・前へのリンクを追加します

レッスン 2/413 ステップ

「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 = 10

page_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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Paginatorクラス
  2. ListViewのページ操作
  3. TestCaseとアサーションの記述
  4. Test ClientとFixtures
← Django Academyに戻る