Flask中Session变量无法传递至其他路由的技术问题
Flask Session跨路由传递失败的解决方案
你代码里的几个关键问题导致了session无法跨路由读取:
路由定义语法错误
/upload路由没有定义视图函数(缺少def upload():),导致这个路由根本没被正确注册,session变量filename也就从来没被设置过。配置未正确加载到Flask应用
直接定义SECRET_KEY、SESSION_TYPE这些变量没用,必须把配置写入app.config字典,Flask才能识别这些会话配置。配置项拼写错误
SESSION_PERMENENT拼写错误,正确的是SESSION_PERMANENT(注意中间的字母A)。视图函数缺少返回响应
/upload的POST请求分支最后没有返回任何内容,会导致Flask生成不完整的响应,可能影响session的持久化保存。缺失必要导入
代码中使用了secure_filename、os、pandas但没有导入,需要补充完整。
修正后的完整代码
from flask import Flask, request, session from flask_session import Session from werkzeug.utils import secure_filename import os import pandas as pd app = Flask(__name__) # 正确加载会话配置到app.config app.config['SECRET_KEY'] = "changeme" app.config['SESSION_TYPE'] = 'filesystem' app.config['SESSION_PERMANENT'] = False # 初始化Session Session(app) # 确保上传目录存在 UPLOADED_FOLDER = 'UPLOADED_FOLDER' os.makedirs(UPLOADED_FOLDER, exist_ok=True) @app.route('/upload', methods=['POST', 'GET']) def upload(): # 添加视图函数定义 if request.method == 'POST': if 'file' not in request.files: return "No file part" file = request.files['file'] if file.filename == '': return "No selected file" filename = secure_filename(file.filename) file.save(os.path.join(UPLOADED_FOLDER, filename)) if filename.split(".")[-1] == 'csv': dataframe = pd.read_csv(os.path.join(UPLOADED_FOLDER, filename)) session['filename'] = filename # 设置session变量 return "File uploaded successfully" # 添加返回响应 return "Upload page" @app.route('/processing', methods=['POST', 'GET']) def processing(): # 返回session中的filename,不存在则返回默认值 return session.get('filename', 'No filename in session')
内容的提问来源于stack exchange,提问作者Nr Parthu
相关产品推荐
相关产品推荐

