少し前から Django フォームの作業を開始しました。私は、次のように書くだけで、フォームを自分で生成させてきました。
{{ test_form.as_p }}
これはうまくいきました。
次に、このテンプレートをカスタマイズするために回避することにしましたが、何らかの理由で次の行:
{{ form.subject }}
フォームを表示しません。ドキュメントを誤解していましたか? 生成された HTML も確認しましたが、単に {{ form.suject }} を飛び越えているだけです。
コードは次のとおりです。
テンプレート:
<form action="/contact/" method="post">
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.subject.errors }}
<label for="id_subject">Email subject:</label>
{{ form.subject }}
</div>
<div class="fieldWrapper">
{{ form.message.errors }}
<label for="id_message">Your message:</label>
{{ form.message }}
</div>
<div class="fieldWrapper">
{{ form.sender.errors }}
<label for="id_sender">Your email address:</label>
{{ form.sender }}
</div>
<p><input type="submit" value="Send message" /></p>
関連付けられたビュー:
def contact(request):
if request.method == 'POST':
form = contact_form(data=request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
sender = form.cleaned_data['sender']
recipents = ['grit.erlum@gmail.com']
send_mail(subject, message, sender, recipents)
print 'mail sent'
return render_to_response('contact.html', {'contact_form' : contact_form}, context_instance=RequestContext(request))
そしてもちろん Form Class :
class contact_form(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField(max_length=1000, widget=forms.Textarea)
sender = forms.EmailField()