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

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

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

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

{{ value|linebreaks }}