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

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

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


person Nazmul Hasan    schedule 31.08.2009    source источник


Ответы (2)


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

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

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

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

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

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

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

person Ned Batchelder    schedule 31.08.2009
comment

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

{{ value|linebreaks }}
person David    schedule 31.08.2009
comment
Это должен быть ответ. использование ‹pre›‹/pre› просто дерьмо. - person Rahul; 02.06.2018