Передача HTML в шаблон с помощью Flask / Jinja2 - PullRequest
130 голосов
/ 08 июля 2010

Я создаю администратора для Flask и SQLAlchemy и хочу передать HTML-код для различных входных данных в мое представление, используя render_template.Кажется, что шаблонная среда автоматически выходит из html, поэтому все <"'> преобразуются в html-сущности. Как я могу отключить это, чтобы HTML отображался правильно?

Ответы [ 4 ]

270 голосов
/ 08 июля 2010

идеальный способ это

{{ something|safe }}

чем полностью отключить авто-экранирование.

92 голосов
/ 16 июля 2010

Вы также можете объявить это HTML безопасным из кода:

from flask import Markup
value = Markup('<strong>The HTML String</strong>')

Затем передайте это значение шаблонам, и им не нужно |safe его.

15 голосов
/ 13 февраля 2015

Из раздела документации по дзиндзя Выход из HTML :

Когда включено автоматическое экранирование, по умолчанию все экранируется за исключением значений, явно помеченных как безопасные. Те могут быть помечены приложением или в шаблоне с помощью | сейфа фильтр.

Пример:

 <div class="info">
   {{data.email_content|safe}}
 </div>
0 голосов
/ 28 июня 2019

Если у вас много переменных, которые не нужно экранировать, вы можете использовать блок autoescape:

{% autoescape off %}
{{ something }}
{{ something_else }}
<b>{{ something_important }}</b>
{% endautoescape %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...