Django не отображает символ новой строки при отображении текста из базы данных - PullRequest
73 голосов
/ 31 августа 2009

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

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

Ответы [ 2 ]

191 голосов
/ 31 августа 2009

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

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

<code><pre>{{value}}

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

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

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

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

20 голосов
/ 31 августа 2009

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

{{ value|linebreaks }}
...