从变量渲染HTML标记而不转义

时间:2015-07-18 09:12:16

标签: python flask jinja2

我有一些HTML内容要传递给模板进行渲染。但是,它会使标记转义为使用HTML实体(.ppk),因此它们显示为代码而不是标记。如何渲染传递给模板的html?

<
tags = """<p>some text here</p>"""
render_template ('index.html',tags=tags)

我想要一个包含文字的段落。

{{ tags }}
'&lt; some text here &gt;'

1 个答案:

答案 0 :(得分:9)

使用jinja2 safe过滤器:

{{ tags | safe }}

safe过滤器告诉模板引擎不要自动转义字符串(因为你手动转义它或者你确定字符串是安全的)。因此,如果用户引入该字符串并且您没有逃脱它,则可能会引发安全问题(&#34;不要信任用户&#34;)。

修改

正如@davidism所指出的,还有另一种方法 - 推荐的方法 - 将HTML传递给模板:使用python代码中的Markup对象来包装要传递给模板的html代码。

tags = Markup("<p>some text here</p>")

并在您的模板中仅使用:

{{ tags }}

将打印

some text here