コンテキストを使ってデータを成型して出力する
ファイルにフォームのデータを保存するとき、成型して出力したい。テンプレートを使うわけだが、2つ方法が考えられる。
パターン1はべた書きのテンプレート。Templateクラスを使う。需要はあまりなさそう。パターン2はテンプレートファイルをロードする。これは使える。
パターン1:べた書きのテンプレート
from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.http import HttpResponse from django.template import Context, Template from forms import TodoForm def input_form(request): if request.POST: form = TodoForm(request.POST) if form.is_valid(): form.save() cdata = form.cleaned_data c = Context(cdata) t = Template("Title is {{ title }}. data is {{ description }}.") #t.render(c) fp = open('/home/hoge/temp.txt', 'w') fp.write(t.render(c)) fp.close() return HttpResponseRedirect('/myapp/save/') else: form = TodoForm() return render_to_response('model_form.html', dict(form=form))
パターン2:テンプレートをロード
from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.http import HttpResponse from django.template import loader, Context from forms import TodoForm def input_form(request): if request.POST: form = TodoForm(request.POST) if form.is_valid(): form.save() cdata = form.cleaned_data c = Context(cdata) t = loader.get_template('basic.ctl') #t.render(c) fp = open('/home/hoge/temp.txt', 'w') fp.write(t.render(c)) fp.close() return HttpResponseRedirect('/myapp/save/') else: form = TodoForm() return render_to_response('model_form.html', dict(form=form))
テンプレートファイルbasic.ctlは以下のようにしておく。
data1 is {{ title }}. data2 is {{ description }}. That is all.