2

我有一个 reactJS Web 应用程序作为我的前端,我正在请求在我的 Flask 服务器中路由“/addData”并设置一个名为“FileName”的状态变量。

session['fileName'] = 'smthing'

然后在这一行之后立即将会话变量打印为:

print(session['fileName'])

它打印了分配的正确名称。

然后我在烧瓶服务器中调用了另一个路由“/visualize”。当我尝试使用以下方法访问此路由内的会话变量时:

print(session.get('fileName', 'not set'))

它打印“未设置”。

注意:我使用的是 Flask-session(服务器端会话)

下面显示的是我的init .py 文件

from flask import Flask
from flask_socketio import SocketIO
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS, cross_origin
from flask_session import Session
import os

socketio = SocketIO()
db = SQLAlchemy()
sess = Session()

def create_app(debug=False):

    app = Flask(__name__)
    app.debug = debug
    app.config['SESSION_TYPE'] = 'filesystem'
    app.config['SECRET_KEY'] = 'secret'
    app.config['USE_PERMANENT_SESSION'] = True
    # app.config['SECRET_KEY'] = os.urandom(25)
    app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:pass@localhost/tensormap"
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    from .resources import main
    app.register_blueprint(main)

    socketio.init_app(app)
    db.init_app(app)
    sess.init_app(app)
    CORS(app, expose_headers='Authorization', support_credentials=True)
    return app

下面显示的是我的 2 条路线:

from flask import jsonify, redirect, url_for, render_template, request, session
from . import main
from .. import db
from .database_models.data_preproc import dataset
import os
import json

@main.route('/addData', methods=['POST'])
def addData():

    file = request.files['file']
    datasetFile = file.filename

    dirPath = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '.', 'dataset'))
    path = '{}{}{}'.format(dirPath, "/", datasetFile)

    splitFileInfo = datasetFile.split(".")
    fileName = splitFileInfo[0]
    fileFormat = splitFileInfo[1]

    if dataset.query.filter_by(fileName=fileName).one_or_none():

        print("**********************************")
        session['fileName'] = splitFileInfo[0]
        print(session.get('fileName', 'not set'))
        return "error"


    else:

        file.save(path)   

        session['fileName'] = splitFileInfo[0]
        print(session['fileName'])

        # writing the file entry in the database.
        data = dataset(fileName, path, fileFormat)
        db.session.add(data)
        db.session.commit()   
        print("**********************************")

        return "file uploaded successfully"

@main.route('/visualizeData', methods=['GET'])
def visualizeData():
    print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
    print(session.get('fileName', 'not set'))
    entry = dataset.query.filter_by(fileName='store').one()
    print(entry.filePath)
    if entry:
        with open(entry.filePath, 'r') as f:
            data = f.readlines()
            default = ""
            data = default.join(data)
            return data
    else:
        return 'None'

我在 StackOverflow 中尝试了很多东西,但没有任何效果。我究竟做错了什么?

4

0 回答 0