はじめに
ブログや、ニュースサイト、ECサイト等、投稿コンテンツが多いWebサイトになると一覧表示をした際、表示制限を設けないと永遠と表示が続いてしまいます。
今回はDjangoを用い、1ページ内の表示数に制限を設けていきます。
環境
・Windows 10
・Python 3.10.6
・Django 4.2
・VS code
クラスベースビュー
views.py
from django.views import generic
from .models import PostItem
class PostList(generic.ListView):
template_name = 'postlist
.html'
model = PostItem
paginate_by = 20
ここでは、クラスビューを用いて、テンプレートの指定・モデルの指定・1ページに表示するコンテンツ数の指定をします。
paginate_byの数字を変えると、1ページに表示する数が変化します。今回は20個を一度に表示します。
urls.py
urls.py
path('postlist/', PostList.as_view(), name='postlist')
urlルーティングは特に変わった記述はしません。
Templates
テンプレートでは、コンテンツの表示と前後ページのリンクの設置を行います。
表示するコンテンツをforタグを用いて表示し、ページ底部にページネーションを設置します。
ページネーション部は、長めの記述になるため、独立したTemplateとして保存してテンプレートタグ{% include '' %}で再利用するとすっきりしますね。
参考文献
Narito Blog様
https://blog.narito.ninja/detail/89