2010-02-13 7 views
9

J'ai une forme simpleComment ajouter une classe HTML au help_text d'un formulaire Django?

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

Je peux alors afficher ce formulaire si je l'aime, maintenant, je pratique de {{ form.as_ul }} django besoin de styliser la help_text et j'ai aucune idée comment. Django ne semble pas envelopper cette chaîne dans tout ce qui va laisser mon CSS arriver à si pour le moment, je suis rendu à:

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

Ce que je sais ne va pas donc je suis à la recherche ici pour de meilleurs conseils.

Répondre

7

Il y a peu de choses que vous pouvez personnaliser dans l'interface utilisateur à partir des options de formulaire. La manière la plus flexible d'aborder un problème est de créer votre propre modèle de formulaire puis de le réutiliser au lieu de {{ form.as_something }}. Lisez ces sujets de la documentation Django:

Cela a fonctionné très bien quand je avais besoin des marques de forme significative sur mesure en gardant encore sec.

+1

Convenu. form.as_ * est pour le prototypage rapide seulement; la mise en forme réelle nécessite de le faire dans le modèle. Pas nécessairement champ par champ; dans la plupart des cas, je fais simplement une boucle dans les champs et présente chacun avec le même HTML. –

13

Une façon de faire plus pratique cela est à:

from django.utils.safestring import mark_safe 

puis:

field = models.TextField(help_text=mark_safe("some<br>html")) 
Questions connexes