Django не отображает символ новой строки при рендеринге текста из базы данных

91

Я использую Django для разработки, извлекая из базы данных текст, содержащий символ новой строки. Однако, когда я визуализирую его в шаблоне с помощью тега шаблона, он не показывает символ новой строки.

В чем проблема?

Назмул Хасан
источник

Ответы:

226

Вы должны помнить, что ваши шаблоны создают HTML. В HTML символ новой строки - это просто еще один пробел, это не означает, что следующий текст помещается в новую строку. Есть несколько способов заставить новые строки в HTML.

Вы можете обернуть текст <pre>тегом, чтобы HTML понимал, что он предварительно отформатирован:

<pre>{{value}}</pre>

Вы можете использовать фильтры Django для преобразования ваших текстовых символов новой строки в HTML. linebreaksпревращает одиночные символы новой строки в <br>теги и двойные символы новой строки в <p>теги. linebreaksbrпросто превращает символы новой строки в <br>теги:

{{value|linebreaks}}
{{value|linebreaksbr}}

Вы можете поэкспериментировать с ними, чтобы увидеть, что вам больше нравится.

В противном случае вы можете использовать строковые манипуляции в своем представлении, чтобы преобразовать обычный текст в HTML наиболее удобным для вас способом. А если вы хотите стать действительно продвинутым, вы можете написать свой собственный фильтр, который преобразует так, как вам нравится, и использовать его во всех своих шаблонах.

Нед Батчелдер
источник
30

Не уверен, что полностью понимаю ваш вопрос, но попробуйте использовать фильтр разрывов строк.

{{ value|linebreaks }}
Дэвид
источник
Это должен быть ответ. использование <pre> </pre> - это просто чушь.
Рахул