2010-03-17 9 views
14

Na moim szablonie chcę powtórzyć wszystkie błędy form, w tym te, które NIE należą do określonego pola. (Co oznacza dla form.errors, powinien on również wyświetlać na __all__ błędów aswell)Django, pętla nad wszystkimi błędami formularza

Próbowałem kilka wersji, a mianowicie:

<div id="msg"> 
    {% if form.errors %} 
    <div class="error"> 
    <p><span>ERROR</span></p> 
    <ul> 
    {% for key,value in form.errors %} 
    {% for error in value %} 
    <li>{{ error }}</li> 
    {% endfor %} 
    {% endfor %} 
    </ul> 
    </div> 
    {% endif %} 
</div> 

Nadal nie osiągnięcie, będę wdzięczny za wszelkie sugestie.

Odpowiedz

27

Błędy formularzy w Django są implementowane jako instancja ErrorDict (która jest tylko podklasą dict z dodatkami). Spróbuj lekką korektę do szablonu dla składni pętli:

{% for key, value in form.errors.items %} 
14

jesteś, przypadkiem, szukając form.non_field_errors? W ten sposób uzyskasz dostęp do błędów, które nie są związane z konkretnym polem.

{% if form.non_field_errors %} 
<ul> 
    {{ form.non_field_errors.as_ul }} 
</ul> 
{% endif %} 

Sprawdź również forms.py test suite dla innego przykładu. Wyszukaj form.non_field_errors

+1

Dzięki za pokazanie formularza.non_field_errors! – Hellnar

Powiązane problemy