{{ something.render() | safe }}
のような表現が何であるかを理解するのに少し問題があります。Jinja 2安全なキーワード
私が見たことから、safe
キーワードがないと、真のコンテンツだけでなく、HTMLドキュメント全体が出力されます。
私が知りたいのは、それが実際に何をしているか、どのように機能しているかです。
{{ something.render() | safe }}
のような表現が何であるかを理解するのに少し問題があります。Jinja 2安全なキーワード
私が見たことから、safe
キーワードがないと、真のコンテンツだけでなく、HTMLドキュメント全体が出力されます。
私が知りたいのは、それが実際に何をしているか、どのように機能しているかです。
safe
フィルタは、文字列を明示的に「安全」とマークします。つまり、自動エスケープが有効な場合、自動的にエスケープしないでください。
このフィルタのドキュメントはhereです。
エスケープの対象となる文字については、manual escapingのセクションを参照してください。
通常、テキストはHTMLエスケープされています(<b>
は<b>
として書き出され、<b>
と表示されます)。
何かの後に|safe
を入力すると、既にテキストをエスケープしたことをテンプレートエンジンに伝えます。つまり、「これを直接レンダリングしても安全です。だからあなたのエンコーディングはしません。詳細については
:Jinja2のが上依存するmarkupsafe.Markup
クラス、でそれをラップ:誰でもプログラムで安全なフィルタを使用するために探してここに来てhttp://jinja.pocoo.org/docs/templates/#html-escaping
。