2009-09-02 8 views
11

Si je regarde dans forms.py, as_p() appels _html_output(), les styles erreurs de Django avec champ self.error_class() (bien que je ne trouve pas la définition de cela).Styling django erreurs non-terrain sur les formulaires

Cependant, _html_output() ne style pas non_field_errors (a.k.a top_errors dans le code).

Comment peut-on styliser les erreurs hors champ? Couper et coller tout _html_output? J'utilise Django 1.0.

Répondre

10

Dans votre modèle, vous pouvez accéder à {{form.non_field_errors}} et les restituer comme bon vous semble. Voici comment l'administration de Django les gère par exemple: http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/templates/admin/change_form.html#L40

+0

Merci. Triste de recréer tout le code de rendu de forme dans le langage de modèle, mais peut-être que c'est la bonne chose. Connaissez-vous une référence au modèle complet équivalent à as_p? http://docs.djangoproject.com/fr/dev/topics/forms/#looping-over-hidden-and-visible-fields est proche, mais probablement pas la même chose. – dfrankow

4

Options:

Les deux {{ form.non_field_errors }} et {{ form.non_field_errors.as_ul }} font la même chose. Affiche les erreurs avec un * devant le texte.

Cet article est également utile pour expliquer pourquoi le * ne sera pas retiré django ticket

11

J'utilise ce modèle pour le style des erreurs non champs:

{% 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 %}