Django表单:如果无效,则显示带有错误消息的表单

我Django的forms,它可以检查表单是否有效:

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

但是我错过了如果无效怎么办? 如何返回带有错误消息的表单? 我没有看到任何例子中的“其他”。

如果在表单无效的情况下渲染相同的视图,那么在模板中,您可以使用form.errors访问表单错误。

 {% if form.errors %} {% for field in form %} {% for error in field.errors %} <div class="alert alert-danger"> <strong>{{ error|escape }}</strong> </div> {% endfor %} {% endfor %} {% for error in form.non_field_errors %} <div class="alert alert-danger"> <strong>{{ error|escape }}</strong> </div> {% endfor %} {% endif %} 

一个例子:

 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.contrib 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()}) 

如果你想显示其他forms的错误,而不是只是把{{form.as_p}}像我在下面做的那样

page.html中

 <html> <head> <script> {% if messages %} {% for message in messages %} alert(message); {% endfor %} {% endif %} </script> </head> <body> {{form.as_p}} </body> </html> 
 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,})