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)
'<a href="#">Example</a>'
>>> render_template_string('{{ b|safe }}')
'<a href="#">Example</a>'