You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从主函数向Jinja传递换行符\n或<br>以正确渲染列表

解决方法

推荐方案:直接在模板中循环生成列表

别在后端拼字符串了,模板引擎本来就是干这个的。以常用的Jinja2模板为例,直接把colors列表传给模板,然后在模板里写:

<ol start="0">
{% for color in colors %}
    <li>{{ color }}</li>
{% endfor %}
</ol>

后端只需要传递原始的colors列表,模板会自动渲染成从0开始的有序列表,既简洁又不容易出错。

备选方案:如果必须用字符串变量传递

如果因为某些限制一定要用colors_out变量,得做两件事:

  1. 后端直接拼接完整的HTML列表代码:
colors = ["red", "green", "blue"]
colors_out = "<ol start='0'>"
for color in colors:
    colors_out += f"<li>{color}</li>"
colors_out += "</ol>"
  1. 在模板中告诉引擎这段内容是安全的HTML,不需要转义:
{{ colors_out|safe }}

为什么之前的方法失效?

  • 用\n换行:HTML里的普通文本换行默认会被浏览器解析成空格,只有在<pre>标签里才会保留换行格式,但你要的是有序列表,不是预格式化文本。
  • 用<br>但显示成&lt;br&gt;:这是因为模板引擎默认会转义HTML特殊字符来防止XSS攻击,必须用safe过滤器关闭转义,才能让浏览器正确解析标签(不过更推荐直接拼完整的列表标签,而非用<br>模拟列表)。

内容的提问来源于stack exchange,提问作者Nguyen Tran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:50:42