Jinja 2安全关键字

2024-04-20 05:54:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在理解像{{ something.render() | safe }}这样的表达式的作用时遇到了一个小问题。

据我所见,如果没有safe关键字,它将输出整个html文档,而不仅仅是真正的内容。

我想知道的是,它实际上是做什么的,它是如何运作的。


Tags: 文档内容表达式html关键字rendersomethingsafe
3条回答

对于任何希望以编程方式使用safe过滤器的人:将其包装在一个markupsafe.Markup类中,Jinja2依赖于这个类。

通常文本是HTML转义的(因此<b>将被写为&lt;b&gt;,它将呈现为<b>)。

当你把|safe放在某物后面时,你告诉模板引擎你已经自己逃逸了文本,即“直接呈现它是安全的”。所以它不会为你编码。

有关详细信息:http://jinja.pocoo.org/docs/templates/#html-escaping

safe筛选器显式地将字符串标记为“安全”,即,如果启用了自动转义,则不应自动转义该字符串。

关于这个过滤器的文档是here

请参阅manual escaping一节,查看哪些字符符合转义条件。

相关问题 更多 >