ページ付け
Djangoは、ページ付けされたデータ、つまり「前へ/次へ」リンクを使用して複数のページに分割されたデータを管理するのに役立つ高レベルおよび低レベルの方法を提供します。
Paginatorクラス
内部的には、ページ付けのすべてのメソッドは Paginator クラスを使用します。 QuerySet
を Page オブジェクトに実際に分割するという面倒な作業をすべて行います。
例
Paginator にオブジェクトのリストと、各ページに配置するアイテムの数を指定します。これにより、各ページのアイテムにアクセスするためのメソッドが提供されます。
ノート
Paginator
にリスト/タプル、Django QuerySet
、またはcount()
または__len__()
メソッドを使用するその他のオブジェクトを指定できることに注意してください。 渡されたオブジェクトに含まれるオブジェクトの数を決定するとき、Paginator
は最初にcount()
の呼び出しを試み、次に渡されたオブジェクトにcount()
がない場合は、len()
の使用にフォールバックします。 ] 方法。 これにより、DjangoのQuerySet
などのオブジェクトは、使用可能な場合、より効率的なcount()
メソッドを使用できます。
ListViewのページング
django.views.generic.list.ListView は、表示されたリストをページ付けするための組み込みの方法を提供します。 これを行うには、 paginate_by 属性をビュークラスに追加します。次に例を示します。
これにより、ページあたりのオブジェクト数が制限され、paginator
とpage_obj
がcontext
に追加されます。 ユーザーがページ間を移動できるようにするには、次のようにテンプレートに次のページと前のページへのリンクを追加します。
ビュー機能でPaginatorを使用する
次に、ビュー関数で Paginator を使用してクエリセットをページ付けする例を示します。
テンプレートlist.html
には、上記のListView
のテンプレートと同じ方法で、ページ間のナビゲーションを含めることができます。