将安全过滤器应用于连接的html字符串

时间:2013-01-06 19:40:40

标签: python flask jinja2 wtforms

我一直在尝试这样做:

{% set error_message = '<span class="help-inline">' + field.errors[0]|e + '</span>' %}
{# ... code ... #}
{{ error_message|safe }}

尝试在html中获取此输出:

<span class="help-inline">Some message</span>'

然而,html被转义,我将以上打印出来作为字符串。

所以问题是如何在Jinja2中将连接字符串标记为safe


当前输出(萤火虫):

span as html encoded string

预期产出:

correct html output


更新:试过这个但是没有用:

{% autoescape false %}
    {{ error_message|safe }}
    {# also tried without safe #}
{% endautoescape %}

1 个答案:

答案 0 :(得分:1)

将串联的每个部分字符串标记为safe但是会​​提供所需的输出:

{% set error_message = '<span class="help-inline">'|safe + field.errors[0]|e + '</span>'|safe %}

或略好一点:

{% set error_message = ('<span class="help-inline">' ~ field.errors[0]|e ~ '</span>')|safe %}

(合并safe过滤整个字符串与~连接。+不起作用)