TemplateView
CoddyのDjangoジャーニー「クラスベースビュー」セクションの一部。レッスン 2/18。
求人掲示板には、テンプレートを表示するだけの「概要」ページが必要です。そのためのクラスが Django に用意されています。TemplateView です。get() はすでに実装されており、template_name で指定されたテンプレートを表示します。レシピサイトでは、FAQ を recipes/templates/recipes/pages/faq.html に置いています。
from django.views.generic import TemplateView
class FaqView(TemplateView):
template_name = "recipes/pages/faq.html"ビューはこれだけです。クラス属性を設定して汎用ビューを構成し、Django が記述したコードがその値を読み取ります。
template_name は render() に渡す名前です。つまり、templates/ の後に続くファイルのパスです。フォルダーを省略すると、ページの表示時に TemplateDoesNotExist が発生します。ルートの指定方法は、他のクラスベースビューと同じです。path("faq/", views.FaqView.as_view(), name="faq")。
チャレンジ
簡単jobs/templates/jobs/about.html テンプレートの準備ができました。/about/ で表示しましょう。
jobs/views.pyに、これをレンダリングするTemplateViewであるAboutViewを作成します。jobs/urls.pyに、名前がaboutのルート"about/"を追加します。
Run を押して /about/ を開くと、Job Board lists jobs at small tech companies in Berlin, Lisbon and London. と表示されます。
自分で試してみよう
from django.shortcuts import render
from django.views import View
from .models import Job
class HomeView(View):
def get(self, request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
クラスベースビューのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド