Я создаю admin для Flask и SQLAlchemy, и я хочу передать HTML для разных входов на мой взгляд, используя render_template
. Сценарий шаблонов, похоже, автоматически выходит из html, поэтому все < "' > преобразуются в html-объекты. Как отключить это, чтобы HTML-код отображался правильно?
Передача HTML в шаблон с использованием Flask/Jinja2
Ответ 1
идеальный способ заключается в
{{ something|safe }}
чем полностью отключить автоэкспонирование.
Ответ 2
Вы также можете объявить его безопасным HTML из кода:
from flask import Markup
value = Markup('<strong>The HTML String</strong>')
Затем передайте это значение шаблонам, и они не должны |safe
его.
Ответ 3
Из раздела Jinja Docs HTML Escape:
Когда автоматическое экранирование включено, по умолчанию все экранируются, кроме значений, явно помеченных как безопасные. Они могут быть помечены приложением или в шаблоне с помощью фильтра | safe.
Пример:
<div class="info">
{{data.email_content|safe}}
</div>
Ответ 4
Если у вас много переменных, которые не нужно экранировать, вы можете использовать блок autoescape
:
{% autoescape off %}
{{ something }}
{{ something_else }}
<b>{{ something_important }}</b>
{% endautoescape %}