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

Flask中如何将双空格替换为<br>标签并正确渲染HTML

解决Flask中HTML标签被当作纯文本显示的问题

问题核心是Jinja2模板引擎默认会自动转义HTML内容(防范XSS攻击),所以你直接替换生成的<br>会被转成&lt;br&gt;,最终以纯文本形式展示。下面提供两种可行的解决方式:

方法一:后端处理+模板safe过滤器

  1. 修改Python代码,先将信息中的双空格替换为<br>:
from datetime import date

kalender = Kalender.query.order_by(Kalender.datum).all()
for k in kalender:
    if k.datum < date.today():
        db.session.delete(k)
        db.session.commit()
    # 新增双空格替换逻辑
    k.info = k.info.replace('  ', '<br>')
  1. 在HTML模板中,给arr.info加上safe过滤器,告知Jinja2该内容无需转义:
{% for arr in kalender %}
<p>{{ arr.info|safe }}</p>
{% endfor %}

方法二:模板内直接处理

无需修改后端代码,直接在模板中完成替换并标记内容安全:

{% for arr in kalender %}
<p>{{ arr.info|replace('  ', '<br>')|safe }}</p>
{% endfor %}

安全提示

如果info字段内容来自用户输入,直接使用safe过滤器存在XSS攻击风险。建议先对原始内容做HTML转义,再替换双空格:

from markupsafe import escape

# 先转义恶意内容,再处理换行
k.info = escape(k.info).replace('  ', '<br>')

这种方式既能实现换行效果,又能避免恶意HTML代码被执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:30:38