在多个路由中向烧瓶会话添加变量

时间:2019-08-07 06:51:00

标签: python flask

我正在创建一个应用程序,其中在多个路由中分配了变量。每个路由可以单独添加会话变量,但是当我尝试在两个路由中分配时,会话只会更新第二个路由的变量。

我最初使用的是全局变量而不是会话,因此程序可以正确运行。当会话仅在一条路由中更新时,它也可以正常工作。我认为问题可能是由于返回     '',204 但是当我将调用'/ form'的JavaScript切换到ajax并返回jsonify时,问题仍然存在。

当两条路径中的会话都更新时,我会收到一个KeyError。

@app.route('/form', methods=['POST'])
def handle_form():
    session['collegeName'] = request.form.get('selector')
    print("/form " + "College Name: " + session['collegeName'])

    for row in collegeData:
        if row[0] == session['collegeName']:
            session['collegeInfo'] = row
    print("/form " + "College Info:", session['collegeInfo'])
    session.modified = True

    return '', 204

@app.route('/', methods=['POST', 'GET'])
def upload():
    tempdir = mkdtemp()
    fileList = {}
    if request.method == 'POST':
        for key, f in request.files.items():
            if key.startswith('file'):
                filepath = os.path.join(tempdir, f.filename)
                f.save(filepath)
                print(filepath)
                print(readFile(filepath))
                fileList[escape(f.filename)] = readFile(filepath)
        session['fileList'] = fileList
    else:
        fileList = {}
    rmtree(tempdir)
    return render_template('index.html')

@app.route('/completed')
def completed():

    print(session['fileList'])

    fileList = {}
    for fileName in session['fileList']:
        fileList[fileName] = highlight(session['fileList'][fileName])
    return render_template('results.html', fileList=fileList, title=session['collegeName'])

session['collegeName']session['collegeInfo']不会更新,但是session['fileList']会更新。

'/ form'中的打印语句也可以打印正确的输出。'/ complete'中的高亮功能无法运行,因为highlight()使用session['collegeInfo']

0 个答案:

没有答案