Flask и HTML-переменные

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

body = a bunch of HTML
@app.route('/')
def index():
    return '''
    {}
    '''.format(body)

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

@app.route('/')
def index():
     return render_template("index.html", b = body)

В файле "index.html" я называю это {{ b }} Синтаксис шаблона. Здесь я получаю необработанный HTML. Я чувствую, что мне не хватает только одного маленького кусочка. Вот что я вижу для каждого подхода соответственно.

1 ответ

Jinja будет избегать всех строк, которые он анализирует, чтобы избежать случайного внедрения HTML в ваши шаблоны. Чтобы пометить переменные как "безопасные для использования как есть", необходимо использовать safe Фильтр шаблонов.

{{ b|safe }}

>>> b = '<a href="#">Example</a>'

>>> render_template_string('{{ b }}', b=b)                                                
'&lt;a href=&#34;#&#34;&gt;Example&lt;/a&gt;'

>>> render_template_string('{{ b|safe }}')                                           
'<a href="#">Example</a>'
Другие вопросы по тегам