Flask页面重载后<br>标签显示为纯文本的问题求助
解决Flask页面重载后
<br>标签显示为纯文本的问题 问题原因
AJAX请求后用.html(data)能正确解析<br>实现换行,但页面重载时,Flask默认会转义HTML实体,导致<br>被转换成<br>,最终显示为纯文本而非换行效果。
解决方案
1. Flask后端确保返回未转义的HTML
在生成响应内容时,用Markup类包裹内容,标记为安全HTML,避免Flask自动转义:
from flask import Flask, request, Markup app = Flask(__name__) @app.route('/terminal') def terminal(): command = request.args.get('command', '') # 构造带<br>的响应内容 response_content = f" foo<br>Command '{command}' is not recognised<br><br>Root>" # 用Markup包裹,告诉Flask这是安全的HTML return Markup(response_content)
如果是通过模板渲染页面(重载时显示历史内容),在模板中使用safe过滤器:
<div class="window" id="terminal-window">{{ terminal_content|safe }}</div>
2. 修复前端代码的小问题
你的JavaScript代码有两处小错误,修正后更规范:
$(document).ready(function() { function send_form(e){ $.ajax({ url: $("#command-form").attr("action"), type: "get", cache: false, data: $("#command-input").serialize(), success: function(data){ $("#terminal-window").html(data); $("#command-input").val(""); $("#command-input").focus(); } }); } $("#submit-button").click(function(e){ e.preventDefault(); send_form(e); }); });
内容的提问来源于stack exchange,提问作者user18769601
相关产品推荐
相关产品推荐

