Любой способ добавить новую строку из строки с символом "\n" в колбе?

Я играл с флягой, когда сталкивался с нечетной проблемой с символом "\n". он, похоже, не имеет эффекта в моем браузере, я пытался разместить там
, но он не работал, никаких идей?

from flask import Flask
from flask import render_template
test=Flask(__name__)
@test.route('/')
def root():
    str='yay\nsuper'
    return str
test.run(debug=True)

Ответ 1

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

def root():
    str='yay<br/>super'
    return str

Ответ 2

Вот и получается, что фляжка автоэкранирует html-теги. Поэтому добавление тега <br> просто отображает их на экране, а не создает разрывы строк.

Есть два обходных пути:

  1. Разбейте текст на массив

    text = text.split('\n')
    

    А затем в шаблоне используйте цикл for:

    {% for para in text %}
        <p>{{para}}</p>
    {% endfor %}
    
  2. Отключить автоэкранирование

    Сначала мы заменим \n на <br>, используя replace:

    text = text.replace('\n', '<br>')
    

    Затем мы отключаем автоэкранирование, окружая блок, где нам это требуется, с помощью

    {% autoescape false %}
        {{text}}
    {% endautoescape %}
    

    Однако мы не рекомендуем делать это:

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

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

Ответ 3

  1. работает на меня и сохраняет безопасность

Я бы предложил <br>, а не <p>

{% for para in text %}
    {{para}}<br>
{% endfor %}

тогда результат будет менее громоздким