Как вы отмечаете строки как "безопасные" в представлении (или шаблоне) в Jinja2?

Обычно, когда вы хотите отмечать вывод строки как безопасный в Jinja2, вы делаете что-то вроде этого:

{{ output_string|safe() }}

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

У меня есть настраиваемый фильтр под названием "emailize", который поддерживает URL-адрес для вывода в электронном письме. Кажется, что амперсанды убегают. Есть ли способ в моем настраиваемом фильтре отмечать вывод как безопасный?

Ответ 1

Используйте Markup класс:

класс jinja2.Markup([string])

Отмечает строку как безопасную для включения в выход HTML/XML без необходимости экранирования.

Ответ 2

Отметьте SafeString, например:

from django.utils.safestring import SafeString
...
return context.update({
        'html_string': SafeString(html_string),
})