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

Flask/Jinja模板中HTML嵌套<b>标签未渲染问题求助

问题原因及解决方案

你的<b>标签没被渲染,核心原因是Flask的Jinja2模板默认会自动转义HTML内容。你生成的<b>替换内容</b>会被转义成&lt;b&gt;替换内容&lt;/b&gt;,浏览器只会把它当成纯文本显示,不会解析成HTML标签。

下面给你两种可行的解决方法:


方法一:在模板中使用safe过滤器

直接在模板变量后添加|safe过滤器,告诉Jinja2这个内容是安全的HTML,不需要转义。修改你的模板代码如下:

<h3 class="header3 head4">{{heading}}</h3>

<p id="question">{{question[0]}}</p>

<button id="showanswer">Show the Answer</button>
<p id="answer">{{question[1]|safe}}</p>

<form id="submitanswer" method="post" action="/quiz/processanswer">
<input id="useranswer" type="text" name="answer" placeholder="Enter your answer">
<input id="hiddenanswer" name="hiddenanswer" type="text" value="{{question[1]|safe}}" id="hiddenanswer">
<button id="answerSubmit">Submit</button>
</form>

⚠️ 注意:只有当你完全信任question[1]的内容(比如是你自己通过API生成的,不含任何用户输入)时才用这个方法,避免跨站脚本(XSS)攻击风险。


方法二:在后端用Markup标记安全HTML

在Python后端代码中,导入Flask的Markup类,把生成的带HTML标签的字符串标记为安全内容,再传给模板:

from flask import Markup

# 假设你已经生成了remaining_words列表,拼接成最终文本
final_sentence = ' '.join(remaining_words)
# 用Markup包裹,标记为安全HTML
safe_sentence = Markup(final_sentence)

# 之后把safe_sentence赋值给question[1],再传入模板

这样模板里直接使用{{question[1]}}就能正常渲染<b>标签了。


你可以检查浏览器的开发者工具(元素面板),之前看到的<b>其实是转义后的实体字符,用上面任一方法都能让浏览器正确解析成粗体标签。

内容的提问来源于stack exchange,提问作者Sean.realitytester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:52:19