Django フォームでは、フォームが有効かどうかを確認できます。
if form.is_valid():
return HttpResponseRedirect('/thanks/')
しかし、それが有効でない場合はどうすればよいかわかりませんか?エラー メッセージを含むフォームを返すにはどうすればよいですか? どの例にも「else」はありません。
Django フォームでは、フォームが有効かどうかを確認できます。
if form.is_valid():
return HttpResponseRedirect('/thanks/')
しかし、それが有効でない場合はどうすればよいかわかりませんか?エラー メッセージを含むフォームを返すにはどうすればよいですか? どの例にも「else」はありません。
フォームが有効でないときに同じビューをレンダリングすると、テンプレートで を使用してフォーム エラーにアクセス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(request, 'my_template.html', {'form': form})
ビュー.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()})
有効でない以外のフォームのエラーを表示したい場合は、以下のように {{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})