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
相关产品推荐
相关产品推荐

