我可以在模板内完成还是必须在 python 代码中完成?
我有一个可能包含 da<ngero>u&s 字符的变量。我如何在 jinja2 中逃脱它?
您还可以告诉环境自动转义所有内容:
e = Environment(loader=fileloader, autoescape=True)
注意:在 jinja1 中这是 auto_escape
如果你想在你的程序中转义 html,你可以这样做(示例):
>>> import jinja2
>>> jinja2.__version__
'2.6'
>>> a
'<script>alert("yy")</script>'
>>> jinja2.escape(a)
Markup(u'<script>alert("yy")</script>')
>>> str(jinja2.escape(a))
'<script>alert("yy")</script>'
Flask 有一个内置的tojson
过滤器:
您可以进行字符串检查并用相应的转义字符替换。
例如:string=I am a special character <
执行以下操作:
string.replace("<","< ;")
请注意,在您的代码中, t 和 ; 之间的空格 已被淘汰。无法在此处消除此问题,因为它将被格式化为显示 < :P
然后使用 jinja2 打印出格式化的字符串。< 应该出现在您的显示器中。