Django не відображає символ нового рядка під час відтворення тексту з бази даних


90

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

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

Відповіді:


222

Ви повинні пам’ятати, що ваші шаблони створюють 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> просто глупство.
Рахул,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.