Вы правы, это может быть лучше, вот лучшая альтернатива (но продолжайте читать):
def contact(request):
form = ContactForm(request.POST or None) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/thanks/') # Redirect after POST
return render_to_response('contact.html', {
'form': form,
})
Этот фрагмент взят из выступления под названием Расширенное использование форм Django от DjangoCon11.
Обратите внимание, что при этом пустая форма будет обрабатываться как действительная (даже перед отправкой), если все поля являются необязательными и вы не используете защиту CSRF. Таким образом, чтобы устранить этот риск, вам лучше использовать этот:
def contact(request):
form = ContactForm(request.POST or None) # A form bound to the POST data
if request.method == 'POST' and form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/thanks/') # Redirect after POST
return render_to_response('contact.html', {
'form': form,
})