万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

DjangoのDetailViewのテンプレート

DjangoのDetailViewを使うとき、

from django.views.generic import DetailView

でインポートし、

class HogeDetailView(DetailView):
    model = Hoge

    def get_context_data(self, **kwargs):
        context = super(HogeDetailView, self).get_context_data(**kwargs)
        return context

urls.py

from django.contrib.auth.decorators import login_required

# 省略

url(r'^(?P<pk>\d+)$', login_required(HogeDetailView.as_view()), name='hoge_detail'),

な感じで、HogeDetailViewを使えるが、 テンプレートを、 templates/[models.pyのアプリ名のフォルダ名]/モデル名を全て小文字化_detail.html に置く、

templates/appname/hoge_detail

※もし名前が「HogeBar」モデルの場合は、アンダースコアなしの「hogebar.html」になるはず。

テンプレートの書き方がわからなかった。

django - DetailView template not displaying model data - Stack Overflow

を見たらobject.カラム名

一応呼ドキュメントにもある、

Generic display views | Django documentation | Django

<h1>{{ object.headline }}</h1>
<p>{{ object.content }}</p>
<p>Reporter: {{ object.reporter }}</p>
<p>Published: {{ object.pub_date|date }}</p>
<p>Date: {{ now|date }}</p>