入門クラス

【Django】TemplateViewとは

Djangoにはテンプレートの内容を出力するTemplateView というMixinがあります。

この記事では、Djangoにおける TemplateView について解説します。

それはなにか

TemplateViewとはモデルと紐付けせずにテンプレートの内容を出力するViewです。

モデルと紐付いたViewはそのモデルのデータを自動的に取得してテンプレートで使用できるようになりますが、このテンプレートではそれがありません。

といっても、モデルのデータをテンプレートに表示できないわけではなく、get_context_dataを呼び出すので、オーバーライドすることでモデルのデータを取得してテンプレートに渡すことができます。

TemplateViewはデータの自動取得はしないがget_context_dataを呼び出すので、自分でコードを書くことでモデルのレコードを取得できる

どんないいことがあるのか

テンプレートの内容を出力することができます。

使い方

モデルはこんな感じだと思ってください。

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

from django.views.generic import TemplateView

from .models import Article

class ArticleDeleteView(DeleteView):
    template_name = "index.html"

    # このようにしてデータを取得することは可能
    def get_context_data(self, **args):
        context = super().get_context_data(**args)
        context['articles'] = Article.objects.all()[:10]
        return context

template_nameTemplateViewで必須です。

template_nameは必須

自動で生成される変数はありません。

<h1>TemplateView</h1>
<ul>
{% for a in articles %}
<li>{{ a.title }}</li>
</ul>

get_context_dataArticleモデルからデータを取得していますのでテンプレートで表示させています。

注意点

特にありません。

まとめ

筆者はトップページなどに使用しています。

-入門クラス
-,