2010-02-13 35 views
9

Tengo una forma sencilla¿Cómo agregar una clase HTML a help_text de un formulario de Django?

class MyForm(forms.Form): 
    ... 
    fieldname = forms.CharField(help_text="Some help text") 

entonces puedo mostrar esta forma con la mano de Django {{ form.as_ul }} si me gusta, ahora tengo que estilizar la help_text y no tengo ni idea de cómo. Django no parece envolver esa cadena en todo lo que le permitirá llegar a mi CSS por lo que en este momento, he restaurado a:

class MyForm(forms.Form): 
    ... 
    fieldname = forms.CharField(help_text='<div class="helptext">Some help text</div>') 

Qué me sé que está mal, así que estoy aquí para un mejor consejo.

Respuesta

7

Solo hay mucho que puedes personalizar en la interfaz de usuario desde las opciones de formulario. La forma más flexible de abordar un problema es crear su propia plantilla de formulario y volver a utilizarla en lugar de {{ form.as_something }}. Lea estos temas a partir de la documentación de Django:

Esto funcionó muy bien cuando lo necesitaba marcas de forma personalizada significativamente aún lo mantiene seco.

+1

De acuerdo. form.as_ * es solo para prototipos rápidos; el diseño de forma real requiere hacerlo en la plantilla. No necesariamente campo por campo; en la mayoría de los casos, simplemente recorro los campos y presento cada uno con el mismo HTML. –

13

Una forma más conveniente de hacer esto es:

from django.utils.safestring import mark_safe 

y luego:

field = models.TextField(help_text=mark_safe("some<br>html")) 
Cuestiones relacionadas