Dap
Dap

Reputation: 2359

How to output text from database with line breaks in a django template?

I have text saved in a database record that looks like this.

This is the text

This is on a new line with a space in between

When I output it on the Django template, it comes out like this

This is the text This is on a new line with a space in between

How can I output the text on my django template to reflect the way it appears in the database?

Upvotes: 18

Views: 13618

Answers (4)

Lucas
Lucas

Reputation: 11

<pre> tag works fine, but has some default declarations (like monospace and margins).

The solution for me was to take the essence of the <pre> tag - the following declaration:

white-space: pre;

And modify it (if you don't need extra spaces):

white-space: pre-line;

Now the data from the database fields models.TextField keep all the line breaks.

Upvotes: 1

Mehdi Hassan Apollo
Mehdi Hassan Apollo

Reputation: 1

Try to use <br/>

<br/> is an HTML code. Don't forget you are working with HTML using Django. Keeping this in mind will solve a lot of beginners trouble.

Upvotes: 0

falsetru
falsetru

Reputation: 369334

Use linebreaks or linebreaksbr filter:

{{ text|linebreaks }}

Or surround the text with <pre>...</pre>.

<pre>{{ text }}</pre>

Upvotes: 26

Mauro Rocco
Mauro Rocco

Reputation: 5128

I linebreaks uses <p> tag to convert new line, this will probally not preserve the empty line or you will just not see it due to css styling. You can try instead linkebrksbr that will use <br/> for new lines.

Hope this helps

Upvotes: 3

Related Questions