29

我可以在模板内完成还是必须在 python 代码中完成?

我有一个可能包含 da<ngero>u&s 字符的变量。我如何在 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 回答