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

Flask中如何在HTML页面正确显示Python错误的换行符?

解决Flask中错误信息换行符在HTML中无法正确渲染的问题

方案1:在模板中使用safe过滤器

Jinja2默认会自动转义HTML特殊字符以防范XSS攻击,这就是你的<br>被转成&lt;br&gt;的原因。只需在模板输出时添加safe过滤器,明确告知模板这段内容是安全的无需转义:

修改result.html模板:

<p>{{ result|safe }}</p>

方案2:在后端用Markup标记安全内容

如果不想修改模板,可以在后端通过markupsafe.Markup类将处理后的字符串标记为安全HTML内容,直接跳过模板的自动转义:

修改Python代码:

from markupsafe import Markup

def foo():
    try:
        somefunction(bar)
    except Exception as e:
        str_e = repr(e)
        # 替换转义后的换行符为HTML换行标签
        str_e_with_linebreaks = str_e.replace("\\r", "<br>").replace("\\n", "<br>")
        # 标记为安全HTML内容
        return Markup(str_e_with_linebreaks)
    return "No errors were found in the provided data"

额外优化建议

  • 若不需要repr(e)生成的对象详细结构,可以改用str(e)获取错误信息,此时换行符是原生的\n,替换逻辑可简化为str_e.replace("\n", "<br>")。
  • 对于带缩进的结构化错误信息,推荐用<pre>标签包裹,无需替换换行符就能保留原始格式,可读性更强:
    return Markup(f"<pre>{str_e}</pre>")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:33:25