【发布时间】:2013-02-26 19:30:18
【问题描述】:
我有一个清单:
list = ['var','var','var']
在我想要做的 Jinja 模板中:
{{'<br>'.join(list)}}
但<br> 实际上显示在页面上。有没有办法在不添加另一个的情况下做到这一点
{% for item in list %}
{{item}}
<br>
{% endfor %}
【问题讨论】:
我有一个清单:
list = ['var','var','var']
在我想要做的 Jinja 模板中:
{{'<br>'.join(list)}}
但<br> 实际上显示在页面上。有没有办法在不添加另一个的情况下做到这一点
{% for item in list %}
{{item}}
<br>
{% endfor %}
【问题讨论】:
如果列表中的每个元素都是安全(即不包含标记,或者在插入结果之前应该转义的字符),那么您可以将其标记为:
{{'<br>'.join(list)|safe}}
当然,如果你想以这种方式使用它,你应该在将list 上的每个项目提供给模板引擎之前对其进行转义。否则,您的页面可能会受到HTML Injection/XSS 的攻击(尤其是如果您的列表包含用户提交的数据)。
更新:正如@Doobeh 所指出的,join filter 接受自定义安全分隔符,因此您可以改用它,list 的内容仍将被转义:
{{ list|join('<br>'|safe) }}
【讨论】:
{{ list|join('<br>'|safe) }}好像比较金杰瑞,不用关心list的内容。