我在理解像{{ something.render() | safe }}这样的表达式所做的事情时遇到了一些问题。
据我所知,如果没有safe关键字,它会输出整个html文档,而不仅仅是真正的内容。
我想知道的是,它实际上是做什么的,它是如何运作的。
发布于 2012-09-10 02:02:56
safe过滤器将字符串显式标记为“安全”,即如果启用了自动转义,则不应对其进行自动转义。
有关此过滤器的文档是here。
要了解哪些字符符合转义条件,请参阅manual escaping小节。
发布于 2012-09-10 02:03:43
通常文本是超文本标记语言转义的(因此<b>将被写为<b>,这将呈现为<b>)。
当你把|safe放在某个东西后面时,你是在告诉模板引擎你已经自己转义了文本,也就是说“直接呈现它是安全的”。所以它不会为你做这个编码。
欲了解更多信息,请访问:http://jinja.pocoo.org/docs/templates/#html-escaping
发布于 2017-04-24 18:51:38
对于希望以编程方式使用安全过滤器的任何人来说:将其包装在Jinja2所依赖的markupsafe.Markup类中。
https://stackoverflow.com/questions/12341496
复制相似问题