我正在创建一个应用程序,其中在多个路由中分配了变量。每个路由可以单独添加会话变量,但是当我尝试在两个路由中分配时,会话只会更新第二个路由的变量。
我最初使用的是全局变量而不是会话,因此程序可以正确运行。当会话仅在一条路由中更新时,它也可以正常工作。我认为问题可能是由于返回 '',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']
。