2009-09-02 15 views
11

si miro en de Django forms.py, as_p() llamadas _html_output(), que estilos errores campo con self.error_class() (aunque no puedo localizar la definición de eso).Styling Django errores no campo sobre formas

Sin embargo, _html_output() NO tiene el estilo non_field_errors (a.k.a. top_errors en el código).

¿Cómo se estilizan los errores que no son de campo? Cortar y pegar todo _html_output?

Estoy usando Django 1.0.

Respuesta

10

En su plantilla puede acceder a {{form.non_field_errors}} y renderizarlos como desee. He aquí cómo la administración de Django se encarga de ellos, por ejemplo: http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/templates/admin/change_form.html#L40

+0

Gracias. Es triste recrear todo el código de representación de formulario en el lenguaje de plantilla, pero tal vez sea lo correcto. ¿Conoces una referencia al equivalente completo de la plantilla de as_p? http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-hidden-and-visible-fields está cerca, pero probablemente no sea el mismo. – dfrankow

4

Opciones:

Tanto {{ form.non_field_errors }} y {{ form.non_field_errors.as_ul }} hacen lo mismo.

{{ form.non_field_errors.as_text }} muestra los errores con un * delante del texto.

Este artículo es también útil para explicar por qué el * no se eliminará django ticket

11

utilizo esta plantilla de estilo errores no campos:

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