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

Flask模板渲染数据库取出的HTML<br>标签未生效换行如何解决

问题原因

这是模板引擎的默认安全机制导致的:绝大多数现代模板引擎默认开启HTML自动转义,会把内容中的<、>等特殊字符转义为&lt;、&gt;这类HTML实体,避免XSS注入攻击,所以浏览器不会把内容里的<br>识别为HTML换行标签,只会当成普通文本输出。

解决方案

不要关闭全局HTML转义(会带来严重的安全风险),仅针对当前你确认内容安全的字段,单独开启HTML内容解析即可,不同模板引擎的写法如下:

  • Jinja2(Python Flask/Django生态常用):使用safe过滤器
    {{ row['data'] | safe }}
    
  • Vue:使用v-html指令
    <div v-html="row.data"></div>
    
  • React:使用dangerouslySetInnerHTML属性
    <div dangerouslySetInnerHTML={{__html: row.data}} />
    
  • Thymeleaf(Java生态常用):使用th:utext属性
    <div th:utext="${row.data}"></div>
    
  • Smarty(PHP生态常用):使用nofilter修饰符
    {$row.data nofilter}
    

注意事项

关闭字段转义后会存在XSS注入风险,请确保该字段的所有内容都是完全可控的,如果内容包含用户提交的部分,需要提前做安全过滤,仅放行<br>这类你允许的标签,拦截所有恶意脚本标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:36:02