Как напечатать разрывы строк в шаблоне Python Django - PullRequest
22 голосов
/ 23 февраля 2010
{'quotes': u'Live before you die.\n\n"Dream as if you\'ll live forever, live as if you\'ll die today"\n\n"Love one person, take care of them until you die. You know, raise kids. Have a good life. Be a good friend. Try to be completely who you are, figure out what you personally love and go after it with everything you\'ve got no matter how much it takes." -Angelina Jolie.'}

Обратите внимание, что в моем словаре есть разрывы строк: \ n

Как мне отобразить мой шаблон с этими переносами строк?

{{цитаты | withlinebreaks \ п}}

Ответы [ 2 ]

58 голосов
/ 23 февраля 2010

Используйте фильтр linebreaks.

Например:

{{ value|linebreaks }}

Если значение равно Joel\nis a slug, на выходе будет <p>Joel<br />is a slug</p>.

7 голосов
/ 06 апреля 2018

Вы также можете использовать фильтр linebreaksbr, чтобы просто преобразовать все новые строки в <br> без дополнительных <p>.

Пример:

{{ value|linebreaksbr }}

Если value равно Joel\nis a slug, выходное значение будет Joel<br>is a slug.

Отличие от ответа Игнасио (linebreaks filter) заключается в том, что linebreaks пытается угадать абзацы в тексте и переносить каждый абзац в <p>, где linebreaksbr просто подставляет переводы строк с <br>.

Вот демоверсия:

>>> from django.template.defaultfilters import linebreaks
>>> from django.template.defaultfilters import linebreaksbr
>>> text = 'One\nbreak\n\nTwo breaks\n\n\nThree breaks'
>>> linebreaks(text)
'<p>One<br />break</p>\n\n<p>Two breaks</p>\n\n<p>Three breaks</p>'
>>> linebreaksbr(text)
'One<br />break<br /><br />Two breaks<br /><br /><br />Three breaks'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...