Jinja2将HTML字符串标记为安全

时间:2017-11-13 11:48:56

标签: python flask jinja2

我在jinja2中有一个HTML标记,我希望将变量嵌入其中。

Format.html:

{% set color="red" %}
{% set tag="<img src='{{ color }}.png' />" %}
This is red {{ tag|safe }}.

如果我将tag标记为安全,则不会呈现变量color。如果我没有将其渲染为安全,它会清理HTML img标记并且无法嵌入我的图像。如何正确嵌入我的图像?我不想写出img标签,因为我需要它作为整个代码中的可重用变量。

1 个答案:

答案 0 :(得分:3)

问题是您无法在另一个模板标记中使用{{ }}。但是,您可以在模板标记内连接字符串和变量color,如下所示:

方法#1:使用~符号。从Jinja2的docs开始,它将变量转换为字符串并连接它们。

{% set tag = "<img src='" ~  color ~ ".png' />" %}

OR

方法#2:使用format过滤器:

{% set tag = "<img src='%s.png' />"|format(color) %}