ジェネリック ビューはかなりクールですが、私が興味を持っているのはジェネリック テンプレートです。
たとえば、オブジェクトを渡すと、それを文字列に並べるだけです。
または、リストを指定すると、オブジェクトを反復処理して、それらを ul (または tr、または必要と思われるもの) として文字列化します。
ほとんどの用途では、これは必要ありません。友人のために何かをすばやくまとめたところです (知っておく必要がある場合は、バー ストック アプリ)。テンプレートを書く気がしません。
ジェネリック ビューはかなりクールですが、私が興味を持っているのはジェネリック テンプレートです。
たとえば、オブジェクトを渡すと、それを文字列に並べるだけです。
または、リストを指定すると、オブジェクトを反復処理して、それらを ul (または tr、または必要と思われるもの) として文字列化します。
ほとんどの用途では、これは必要ありません。友人のために何かをすばやくまとめたところです (知っておく必要がある場合は、バー ストック アプリ)。テンプレートを書く気がしません。
django.contrib.admin
そのためのdjangoモデルがある場合は、またはに固執することができますdjango.contrib.databrowse
。そうでない場合は、django テンプレートを完全にスキップして管理できます。例:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
しかしもちろん、それほど多くのことを書くことさえ避けたかったので、html を行う代わりに、プレーン テキストとpprint
モジュールを使用できます。
from django.http import HttpResponse
import datetime
from pprint import pformat
def current_datetime(request):
now = datetime.datetime.now()
return HttpResponse(pformat(now), mimetype="text/plain")
編集:うーん...これは、ビューデコレータが処理する必要があるもののようです:
from django.http import HttpResponse
import datetime
import pprint
def prettyprint(fun):
return lambda request:HttpResponse(
pprint.pformat(fun(request)), mimetype="text/plain")
@prettyprint
def current_datetime(request):
return datetime.datetime.now()
テンプレートを書くことから逃れることはできません。特に、少しでもフォーマットしたい場合はそうです。
ただし、基本的なテンプレートを再利用できます。たとえば、汎用のobject_list.htmlやobject_detail.htmlを作成できます。
これには基本的に、オブジェクトリストをループして表示し、オブジェクトの詳細を表示するための情報が含まれます。必要に応じて、アプリ全体でこれらの「汎用」テンプレートを使用できます。