Andrew C
Andrew C

Reputation: 699

Newline in label for Django form field

Is there a way to put a newline in the label of a form field in Django? Putting a \n just results in a newline in the HTML, and trying <br> just displays the characters as they are. Is there an equivalent |safe operation that I can specify on the field?

Upvotes: 11

Views: 18346

Answers (2)

Anupam
Anupam

Reputation: 15620

You can also do this directly in the template as follows:

 {{my_field.label|linebreaks}} 

\n will convert to <br/> that way

As per the doc,

a single newline becomes an HTML line break (<br />) and a new line followed by a blank line becomes a paragraph break (</p>).

Upvotes: 9

Alasdair
Alasdair

Reputation: 308979

You can use mark_safe so that the <br /> tag is not escaped.

It's equivalent to using safe in the template, so be careful if you're handling user input. If it's a hardcoded string, then it's safe to use.

from django import forms
from django.utils.safestring import mark_safe

class MyForm(forms.Form):
    my_field = forms.CharField(label=mark_safe('my label<br />next line'))

Upvotes: 26

Related Questions