I added this snippet into my models.py to override Django form's default behaviour of adding ":" to form labels

from django.forms import BaseForm orig_init = BaseForm.__init__ def BaseForm_init(*args, **kwargs): kwargs.setdefault("label_suffix", "") orig_init(*args, **kwargs) BaseForm.__init__ = BaseForm_init

It has the intended result. But now I am trying, instead of appending '' (nothing), to append a linebreak 'br' so every label is followed by a line break. So the fourth line of the above snippet would look like

kwargs.setdefault("label_suffix", "<br>")

This should have the effect of doing the below in a specific instance on all form items

message = forms.CharField(widget=forms.Textarea,label = mark_safe('LABEL_NAME<br>'))

instead it prints

as text on the html page... looking at the HTML source you can see why:

<label for="id_hello">Hello<br></label>

The python code is converting the triangular brackets into the html code for a triangular bracket which displays it as text.

How can I get it to print: