29

テンプレート内で実行できますか、それともPythonコードで実行する必要がありますか?

da <ngero> u&scharsを含む可能性のある変数があります。jinja2でエスケープするにはどうすればよいですか?

4

5 に答える 5

53

例えば

{{ user.username|e }}

|eフィルターに通します

Jinja:テンプレートデザイナーのドキュメント->HTMLエスケープ

于 2009-10-12T20:03:50.907 に答える
18

また、すべてを自動エスケープするように環境に指示することもできます。

e = Environment(loader=fileloader, autoescape=True)

注:jinja1ではこれはauto_escapeです

于 2010-09-29T10:25:13.563 に答える
8

プログラムでhtmlをエスケープしたい場合は、次のように実行できます(例)。

>>> import jinja2
>>> jinja2.__version__
'2.6'
>>> a
'<script>alert("yy")</script>'
>>> jinja2.escape(a)
Markup(u'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;')
>>> str(jinja2.escape(a))
'&lt;script&gt;alert(&#34;yy&#34;)&lt;/script&gt;'
于 2012-04-08T15:16:27.130 に答える
1

Flaskにはtojsonフィルターが組み込まれています。

http://flask.pocoo.org/docs/templating/#standard-filters

于 2013-01-22T21:22:38.743 に答える
-1

文字列チェックを実行して、対応するエスケープ文字に置き換えることができます。

例:string=I am a special character <
次の手順を実行します。

string.replace("<","&lt ;")

コードでは、tと;の間のスペースに注意してください。削除されました。代わりに<を表示するようにフォーマットされるため、ここでこれを排除することはできません:P

次に、jinja2を使用してフォーマットされた文字列を出力します。<がディスプレイに表示されます。

于 2020-12-21T08:51:11.773 に答える