[django]formでフィールド項目以外のエラーはnon_field_errors()で拾える
djangoのformをtemplateに描画する時、以下のようにフィールド個別に要素を抽出して、デザインを個別に割り当てるなどすることが出来る。
- {{field.label}}
- {{field.label_tag}}
- {{field.value}}
- {{field.html_name}}
- {{field.help_text}}
- {{field.errors}}
エラーをフィールド別に独自デザインするときなどにはよく使う。
では、フィールド項目以外のエラー(例えばclean()メソッドでフォーム自体にValidateErrorが発生した場合)は、
いちいち{{form.errors}}から各フィールドの{{field.errors}}を抜き出してから表示するのか。
そんなことはない。
- {{form.non_field_errors}}
がある。一応Django 1.0の頃からあったみたいです(フォームやフィールドのバリデーション — Django v1.0 documentation)。
覚えておくとフォーム周りで細かいデザインをしたいときに役立ちます。