Подтвердить что ты не робот

Jinja 2 безопасное ключевое слово

У меня есть небольшая проблема, понимающая, что делает выражение типа {{ something.render() | safe }}.

Из того, что я видел, без ключевого слова safe он выводит весь html-документ, а не только истинный контент.

Что бы я хотел знать, это то, что он на самом деле делает, как он функционирует.

4b9b3361

Ответ 1

Фильтр safe явно помещает строку как "безопасную", т.е. она не должна автоматически экранироваться, если включено автоматическое экранирование.

Документация по этому фильтру здесь.

См. раздел ручное экранирование, чтобы увидеть, какие символы соответствуют экрану.

Ответ 2

Обычно текст выведен из HTML (поэтому <b> будет выписан как &lt;b&gt;, который будет отображаться как <b>).

Когда вы помещаете |safe после чего-то, вы сообщаете движку шаблона, что вы уже избежали текста самостоятельно, то есть "безопасно отображать это прямо". Поэтому для вас это не будет сделано.

Для получения дополнительной информации: http://jinja.pocoo.org/docs/templates/#html-escaping

Ответ 3

Для тех, кто придет сюда искать программный программный фильтр: оберните его в класс markupsafe.Markup, от которого зависит Jinja2.