2009-09-02 12 views
11

Jeśli patrzę w Django forms.py, as_p() połączeń _html_output(), które style błędy pole self.error_class() (choć nie mogę znaleźć definicję tego).Styling Django błędy non-polowe na formach

Jednak _html_output() NIE ma stylu non_field_errors (a.k.a. top_errors w kodzie).

W jaki sposób można stylizować błędy inne niż pola? Wytnij i wklej cały _html_output?

Używam Django 1.0.

Odpowiedz

10

W swoim szablonie możesz uzyskać dostęp do {{form.non_field_errors}} i renderować je w dowolny sposób. Oto jak admin Django obsługuje je na przykład: http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/templates/admin/change_form.html#L40

+0

Dzięki. Smutne, aby odtworzyć cały kod renderujący formularz w języku szablonów, ale może to jest właściwe. Czy znasz referencję do pełnego szablonu odpowiednika as_p? http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-hidden-and-visible-fields jest blisko, ale prawdopodobnie nie to samo. – dfrankow

4

Opcje:

Zarówno {{ form.non_field_errors }} i {{ form.non_field_errors.as_ul }} zrobić to samo.

{{ form.non_field_errors.as_text }} wyświetla błędy z * przed tekstem.

Ten artykuł jest również pomocne w wyjaśnieniu dlaczego * nie zostaną usunięte django ticket

11

mogę użyć tego szablonu do stylu spoza pola błędów:

{% if form.non_field_errors %} 
    <div class="non-field-errors"> 
    {% for err in form.non_field_errors %} 
     <p class="form-error">{{ err }}</p> 
    {% endfor %} 
    </div> 
{% endif %} 
Powiązane problemy