2013-05-22 24 views

Odpowiedz

6

This section w sekcji dokumentów formy ma wszystkie dane, a mianowicie ten fragment:

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

Replace form z co nazywasz swoją klasę formularza w szablonie. W tym przykładzie subject jest polem w formularzu. Jeśli chcesz mieć osobny rozdział, aby podsumować wszystkie błędy, wystarczy pętlę przez pola:

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

Masz typoe w kodzie. {% if form.error%} -> {% if form.errors%} – aabele

12

Istnieją dwie nowe metody w Django 1.7, który będzie również przydatny do rozwiązania tego problemu:

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

Aby uzyskać dostęp do błędów dla określonego pola, należy użyć form.field_name.errors, gdzie "field_name" jest nazwą pola, które generuje błąd.

Nadal dobrze jest używać pętli for, na wypadek gdyby w polu pojawił się więcej niż jeden błąd.

Ropa przykład:

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

Niektóre błędy nie mogą być ściśle powiązane w pewnym zakresie, na przykład, że błędem jest podniesione kiedy dwa pola hasła nie pasują do siebie. Powinny być dostępne przez:

{{ form.non_field_errors }} 
Powiązane problemy