Formulaires Django: s’il n’est pas valide, affichez le formulaire avec un message d’erreur

Je formes Django, il peut vérifier si le formulaire est valide:

if form.is_valid(): return HttpResponseRedirect('/thanks/') 

Mais il me manque quoi faire si ce n’est pas valide? Comment retourner le formulaire avec les messages d’erreur? Je ne vois pas le “else” dans aucun des exemples.

Si vous affichez la même vue lorsque le formulaire n’est pas valide, alors dans le modèle, vous pouvez accéder aux erreurs de formulaire en utilisant form.errors .

 {% if form.errors %} {% for field in form %} {% for error in field.errors %} 
{{ error|escape }}
{% endfor %} {% endfor %} {% for error in form.non_field_errors %}
{{ error|escape }}
{% endfor %} {% endif %}

Un exemple:

 def myView(request): form = myForm(request.POST or None, request.FILES or None) if request.method == 'POST': if form.is_valid(): return HttpResponseRedirect('/thanks/') return render_to_response('my_template.html', {'form': form}) 

views.py

 from django.consortingb import messages def view_name(request): if request.method == 'POST': form = form_class(request.POST) if form.is_valid(): return HttpResponseRedirect('/thanks'/) else: messages.error(request, "Error") return render(request, 'page.html', {'form':form_class()}) 

Si vous voulez montrer les erreurs du formulaire autres que celles qui ne sont pas valides, il suffit de mettre {{form.as_p}} comme ce que j’ai fait ci-dessous

page.html

      {{form.as_p}}   
 def some_view(request): if request.method == 'POST': form = SomeForm(request.POST) if form.is_valid(): return HttpResponseRedirect('/thanks'/) else: form = SomeForm() return render(request, 'some_form.html', {'form': form})