如何在Jinja2中用换行符替换字符串

mcp*_*son 16 html jinja2 flask python-2.7

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

'item1|item2|item3'
Run Code Online (Sandbox Code Playgroud)

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

{{ 'item1|item2|item3' | replace("|", "<br/>") }}
Run Code Online (Sandbox Code Playgroud)

呈现为

item1<br/>item2<br/>item3<br/>
Run Code Online (Sandbox Code Playgroud)

当我想要的时候

item1
item2
item3
Run Code Online (Sandbox Code Playgroud)

在我的页面上.我觉得我在这里错过了一些明显的伎俩......

mcp*_*son 23

这与autoescaping有关.对我有用的解决方案是:

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

  • 但是如果item1,item2,item3需要被转义怎么办? (9认同)
  • 我用原始输入的显式“转义”更新了代码片段,但官方 jinja2 文档 [提到如何使用自定义过滤器实现相同的结果](http://jinja.pocoo.org/docs/2.10/api/#custom -过滤器) (3认同)
  • 从技术上讲是正确的,但是您确定要禁用自动转义吗?是否要让用户将自己的HTML注入模板? (2认同)
  • 我不想关闭自动转义,所以我在 Python 中执行此操作``new_variable = mystring.split('\n')```,然后将其传递给我的 Jinja 模板,我使用了一个 for 循环:`` ``{% for line in new_variable %}&lt;br /&gt;{{ line }}{% endfor %}``` (2认同)