Djangoでフォームを作成しようとしています。これで問題なく動作しますが、エラーのある各フィールドの横ではなく、すべてのエラーをフォームの最上部に表示する必要があります。 form.errorsをループしてみましたが、エラーが発生したフィールドの名前のみが表示され、「名前が必要です」などのエラーメッセージは表示されませんでした。
これは、フォームの上部で使用できるようにしたいものです。
{% if form.??? %}
<ul class="errorlist">
{% for error in form.??? %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
そこで???
には何を使用しますか? errors
ではありません。フィールドの名前を出力するだけです。
form.errorsは辞書です。あなたがするとき{% for error in form.errors %}
エラーはキーに対応します。
代わりに試してください
{% for field, errors in form.errors.items %}
{% for error in errors %}
...
等。
条件付きの簡単なものが必要な場合は、次のようにします。
{% if form.errors %}
<ul>
{% for error in form.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
詳細が必要で、フィールドの名前とエラーを確認するには、次のようにします。
{% if form.errors %}
<ul>
{% for key,value in form.errors.items %}
<li>{{ key|escape }} : {{ value|escape }}</li>
{% endfor %}
</ul>
{% endif %}
form.errors
を強調したい場合は、大きな辞書です。
ダニーの答えは良い考えではありません。 ValueErrorが発生する可能性があります。
これをチェックして。
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
{{field.label}}: {{ error|escape }}
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
{{field.label}}: {{ error|escape }}
{% endfor %}
{% endif %}