【问题标题】:Flask Jinja Template '<br>'.joinFlask Jinja 模板 '<br>'.join
【发布时间】:2013-02-26 19:30:18
【问题描述】:

我有一个清单:

list = ['var','var','var']

在我想要做的 Jinja 模板中:

{{'<br>'.join(list)}}

&lt;br&gt; 实际上显示在页面上。有没有办法在不添加另一个的情况下做到这一点

{% for item in list %}
{{item}}
<br>
{% endfor %}

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    如果列表中的每个元素都是安全(即不包含标记,或者在插入结果之前应该转义的字符),那么您可以将其标记为:

    {{'<br>'.join(list)|safe}}
    

    当然,如果你想以这种方式使用它,你应该在将list 上的每个项目提供给模板引擎之前对其进行转义。否则,您的页面可能会受到HTML Injection/XSS 的攻击(尤其是如果您的列表包含用户提交的数据)。

    更新:正如@Doobeh 所指出的,join filter 接受自定义安全分隔符,因此您可以改用它,list 的内容仍将被转义:

    {{ list|join('<br>'|safe) }}
    

    【讨论】:

    • {{ list|join('&lt;br&gt;'|safe) }}好像比较金杰瑞,不用关心list的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多