2013-05-22 6 views

Antwort

6

This section in dem Formular Dokumentation Abschnitt enthält alle Details, nämlich dieses Schnipsel:

{% if form.subject.errors %} 
    <ol> 
    {% for error in form.subject.errors %} 
     <li><strong>{{ error|escape }}</strong></li> 
    {% endfor %} 
    </ol> 
{% endif %} 

ersetzen form mit was auch immer Sie Ihre Formularklasse in der Vorlage nennen. In diesem Beispiel ist subject ein Feld in der Form. Wenn Sie einen eigenen Abschnitt haben alle Fehler zusammenfassen, einfach Schleife durch die Felder:

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

Sie haben eine Tippfehler in Code. {% if form.error%} -> {% if form.errors%} – aabele

12

Es gibt zwei neue Methoden in Django 1.7, die auch nützlich wäre, dieses Problem zu lösen:

Form.errors.as_data()

>>> f.errors.as_data() 
{'sender': [ValidationError(['Enter a valid email address.'])], 
'subject': [ValidationError(['This field is required.'])]} 

Form.errors.as_json()

>>> f.errors.as_json() 
{"sender": [{"message": "Enter a valid email address.", "code": "invalid"}], 
"subject": [{"message": "This field is required.", "code": "required"}]} 
1

Um auf Fehler für ein bestimmtes Feld zuzugreifen, verwenden Sie form.field_name.errors, wobei "Feldname" der Name des Felds ist, das den Fehler generiert.

Es ist immer noch gut, eine for-Schleife zu verwenden, falls mehr als ein Fehler im Feld generiert wurde.

Crude Beispiel:

{% for error in form.email.errors %} 
    <label>{{ error|escape }} </label> 
{% endfor %} 
<br> 
<label>Email: </label>{{ form.email }} 

Einige Fehler können nicht speziell auf ein bestimmtes Feld in Beziehung gesetzt werden, zum Beispiel ein Fehler, der ausgelöst wird, wenn zwei Kennwortfelder nicht übereinstimmen. Sie sollten zugänglich sein, indem:

{{ form.non_field_errors }} 
Verwandte Themen