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

Flask应用中save_data函数未执行问题:如何每次接收用户输入时调用该函数?

问题分析与解决

你的核心问题是:当前代码里的save_data函数仅在用户点击exit按钮时才会执行,普通提交输入的场景下完全没触发这个函数,所以看不到数据保存的效果。

修改方案

把save_data(input_data)的调用移到判断submit按钮的逻辑外面,这样每次POST请求(也就是每次用户提交输入)都会先执行数据保存操作,再处理后续的页面跳转或返回逻辑。

修改后的代码如下:

import pandas as pd
from flask import Flask, request, render_template
# 确保get_time函数已正确定义或导入,以下是示例实现
def get_time():
    from datetime import datetime
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def save_data(input_data):
    df = pd.DataFrame([input_data])
    # 若要追加数据而非覆盖原有文件,需添加mode='a'和header=False参数
    df.to_csv('out.csv', mode='a', header=False)

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        input_message = request.form['user_input']
        input_time = get_time()
        input_data = [input_message, input_time]
        # 每次提交输入都先执行保存操作
        save_data(input_data)
        if request.form['submit'] == 'exit':
            return "exit"
        else:
            return render_template('user_input.html', user_input=input_message)
    return render_template('user_input.html')

if __name__ == '__main__':
    app.run(debug=True)

额外注意事项

  • 原代码中df.to_csv('out.csv')默认会覆盖已有文件,若需要累积保存所有输入数据,必须加上mode='a', header=False参数(第一次写入时自动创建文件,后续追加不再重复写入表头)。
  • 确认get_time函数已正确定义或导入,否则会抛出未定义的运行错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:42:49