FlaskおよびSQLAlchemyの管理者を作成しています。異なる入力のHTMLをrender_template
を使用してビューに渡したいと思います。テンプレートフレームワークはhtmlを自動的にエスケープするように見えるため、すべての<"'>はhtmlエンティティに変換されます。HTMLが正しくレンダリングされるように無効にするにはどうすればよいですか。
理想的な方法は
{{ something|safe }}
自動エスケープを完全にオフにするよりも。
コードからHTMLセーフとして宣言することもできます。
from flask import Markup
value = Markup('<strong>The HTML String</strong>')
次に、その値をテンプレートに渡すと、|safe
する必要はありません。
Jinja docsセクションから HTML Escaping :
自動エスケープが有効になっている場合、明示的に安全とマークされた値を除き、すべてがデフォルトでエスケープされます。これらは、安全フィルターを使用して、アプリケーションまたはテンプレートでマークできます。
例:
<div class="info">
{{data.email_content|safe}}
</div>
エスケープする必要のない変数がたくさんある場合は、autoescape
ブロックを使用できます。
{% autoescape off %}
{{ something }}
{{ something_else }}
<b>{{ something_important }}</b>
{% endautoescape %}