【问题标题】:How to replace a string with linebreaks in Jinja2 [duplicate]如何在Jinja2中用换行符替换字符串[重复]
【发布时间】:2017-04-21 17:26:55
【问题描述】:

我在 jinja2 中有一些这样的数据

'item1|item2|item3'

我想把它变成渲染的换行符。但是,当我用 br/ 标签替换它时,我会在页面上呈现 br 标签。所以

{{ 'item1|item2|item3' | replace("|", "<br/>") }}

呈现为

item1<br/>item2<br/>item3<br/>

当我想要时

item1
item2
item3

在我的页面上。我觉得我在这里遗漏了一些明显的技巧......

【问题讨论】:

    标签: html python-2.7 flask jinja2


    【解决方案1】:

    这与自动转义有关。对我有用的解决方案是:

    {% autoescape false %}
      {{ 'item1|item2|item3' | replace("|", "<br/>") }}
    {% endautoescape %}
    

    【讨论】:

    • 但是如果 item1, item2, item3 需要转义怎么办!?
    • 这也适用于replace(variable, 'anyvalue') 谢谢!
    • 技术上正确,但您确定要禁用自动转义吗?您想让用户将自己的 HTML 注入您的模板吗?
    • 我用明确的escape 更新了sn-p,但官方的jinja2 doc mentions how to achieve the same result with a custom filter
    • 我不想关闭自动转义,所以我在 Python new_variable = mystring.split('\n') 中执行此操作,然后将其传递给我的 Jinja 模板,我使用了 for 循环:{% for line in new_variable %}&lt;br /&gt;{{ line }}{% endfor %}
    猜你喜欢
    • 1970-01-01
    • 2021-07-06
    • 2023-03-27
    • 2020-03-26
    • 2012-10-20
    • 2021-02-02
    • 2013-05-18
    • 2011-10-10
    • 2015-10-28
    相关资源
    最近更新 更多