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_nameはTemplateViewで必須です。
template_nameは必須
自動で生成される変数はありません。
<h1>TemplateView</h1>
<ul>
{% for a in articles %}
<li>{{ a.title }}</li>
</ul>get_context_dataでArticleモデルからデータを取得していますのでテンプレートで表示させています。
注意点
特にありません。
まとめ
筆者はトップページなどに使用しています。