29

like という式が何をするのか理解するのに少し問題が{{ something.render() | safe }}あります。

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

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

4

4 に答える 4

35

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

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

手動エスケープのセクションを参照して、エスケープの対象となる文字を確認してください。

于 2012-09-09T18:02:55.837 に答える
31

通常、テキストは HTML エスケープされます (したがって、<b>として書き出され、 として&lt;b&gt;レンダリングされます<b>)。

|safe何かの後に置くと、テンプレート エンジンに対して、テキストを自分で既にエスケープしたことを伝えていることになります。つまり、「これを直接レンダリングしても安全です」ということです。したがって、そのエンコーディングは行われません。

詳細情報: http://jinja.pocoo.org/docs/templates/#html-escaping

于 2012-09-09T18:03:43.453 に答える