Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add an HTML class to a Django form's help_text?

Tags:

python

django

I have a simple form

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

I can then display this form with django's handy {{ form.as_ul }} if I like, now I need to stylise the help_text and I have no idea how. Django doesn't appear to wrap that string in anything that will let my CSS get to it so at the moment, I've restored to:

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

Which I know is wrong so I'm looking here for better advice.

like image 778
Daniel Quinn Avatar asked Feb 13 '10 21:02

Daniel Quinn


2 Answers

A more convenient way to do this is to:

from django.utils.safestring import mark_safe

and then:

field = models.TextField(help_text=mark_safe("some<br>html"))
like image 61
bjw Avatar answered Sep 26 '22 09:09

bjw


There's only that much you can customize in UI from form options. The more flexible way to approach a problem is to create your own form template then and reuse it instead of {{ form.as_something }}. Read these topics from Django documentation:

  • Customizing form templates

This worked very well when I needed significantly customized form marks yet keeping it DRY.

like image 28
Alexander Lebedev Avatar answered Sep 22 '22 09:09

Alexander Lebedev