2012-09-09 7 views
12

{{ something.render() | safe }}のような表現が何であるかを理解するのに少し問題があります。Jinja 2安全なキーワード

私が見たことから、safeキーワードがないと、真のコンテンツだけでなく、HTMLドキュメント全体が出力されます。

私が知りたいのは、それが実際に何をしているか、どのように機能しているかです。

答えて

12

safeフィルタは、文字列を明示的に「安全」とマークします。つまり、自動エスケープが有効な場合、自動的にエスケープしないでください。

このフィルタのドキュメントはhereです。

エスケープの対象となる文字については、manual escapingのセクションを参照してください。

15

通常、テキストはHTMLエスケープされています(<b>&lt;b&gt;として書き出され、<b>と表示されます)。

何かの後に|safeを入力すると、既にテキストをエスケープしたことをテンプレートエンジンに伝えます。つまり、「これを直接レンダリングしても安全です。だからあなたのエンコーディングはしません。詳細については

:Jinja2のが上依存するmarkupsafe.Markupクラス、でそれをラップ:誰でもプログラムで安全なフィルタを使用するために探してここに来てhttp://jinja.pocoo.org/docs/templates/#html-escaping

関連する問題