Menu
CoddyTech

TemplateView

CoddyのDjangoジャーニー「クラスベースビュー」セクションの一部。レッスン 2/18。

求人掲示板には、テンプレートを表示するだけのAboutページが必要です。そのためのクラスが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のようなクラス属性を設定すると、Djangoが書いたコードがそれらを読み取ります。

template_nameはrender()に渡す名前です。つまり、templates/の後に続くファイルのパスです。フォルダーを省略すると、ページの表示時にTemplateDoesNotExistが発生します。ルートは、ほかのクラスベースビューと同じです。path("faq/", views.FaqView.as_view(), name="faq")。

challenge icon

チャレンジ

簡単

用意されているテンプレート jobs/templates/jobs/about.html を /about/ で表示します。

  1. jobs/views.py に、テンプレートをレンダリングする TemplateView の AboutView を追加します。
  2. jobs/urls.py に、"about/" という名前付きルート about を追加します。

/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プレイグラウンド