2013-01-06 45 views
3

我一直在努力做到這一點:應用安全過濾器,以級聯的HTML字符串

{% 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

「{%autoescape false%}」有幫助嗎? http://flask.pocoo.org/docs/templating/#controlling-autoescaping –

+0

@frb剛剛嘗試過,它不工作,任何其他的想法?查看我如何嘗試更新 –

+0

不,對不起。我認爲使用'set'的Jinja中的任務可能會以不符合'| safe'或'autoescape'的方式逃脫。這可能是一個錯誤。 –

回答

1

標記級聯的每個部分串作爲safe但是,得到所需的輸出:

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

OR稍好:

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

(組合safe濾波器級聯整個字符串改爲~+不適用於此)