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

如何在Flask框架中将execute函数的终端打印输出展示到前端网页

解决方案

方案一:一次性展示所有输出(无需修改原有execute的print代码,适合新手快速实现)

步骤1:配置Flask基础参数,添加SECRET_KEY(使用session的必备前提)

在你初始化app的代码下方新增SECRET_KEY配置,生产环境请替换为复杂随机字符串:

app = Flask(__name__)
# 新增此行
app.config['SECRET_KEY'] = 'custom_random_string'

步骤2:捕获execute的print输出并存入session

先导入所需依赖:

from io import StringIO
import sys
from flask import session

修改index路由的执行逻辑,同时修复你原有代码里文件保存的小bug:

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        # 提前在项目根目录新建upload文件夹存储上传的图片
        for file in form.image.data:
            file.save(f'./upload/{file.filename}')
        
        # 捕获print输出的核心逻辑
        old_stdout = sys.stdout
        output_buffer = StringIO()
        sys.stdout = output_buffer
        try:
            execute()
            # 将捕获到的输出存入session
            session['exec_logs'] = output_buffer.getvalue()
        finally:
            # 恢复终端标准输出,不影响后续后台打印
            sys.stdout = old_stdout

        return redirect(url_for("process"))
    return render_template('index.html', user_form=form)

步骤3:修改process路由,将日志传递给模板

@app.route('/processing')
def process():
    # 取出日志后自动从session中清除,避免重复展示
    exec_logs = session.pop('exec_logs', '')
    return render_template('process.html', exec_logs=exec_logs)

步骤4:修改process.html模板,渲染日志内容

{% extends 'base.html' %}

{% block content %}
<p style="text-align:center; font-size:50px; color:#77C66E">File uploaded successfully</p>
<!-- 新增日志展示区域 -->
<div style="width: 80%; margin: 20px auto; padding: 15px; background: #f5f5f5; border-radius: 8px; white-space: pre-wrap;">
    <h3>执行日志:</h3>
    {{ exec_logs }}
</div>
{% endblock %}

方案二:实时输出执行进度(适合执行时间长的场景)

如果你的execute函数运行耗时较长,需要边执行边在前端展示输出,可以使用服务器发送事件(SSE)实现,核心逻辑为前端和后端建立长连接,后端每产生一条输出就推送给前端实时渲染,你可以自行搜索Flask SSE的相关实现逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:03