我正在尝试在我的烧瓶应用程序中使用全局变量:
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
varGlobal = None
@app.route('/')
def home():
return render_template('home.html')
@app.route('/api/prepare', methods=['POST'])
def prepare():
if varGlobal is None:
varGlobal = "some_val"
return varGlobal
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8989, debug=True)
所以当我的页面加载并点击api/prepare
时,我得到:
UnboundLocalError: local variable 'varGlobal' referenced before assignment
只要我的应用运行,我希望此varGlobal
能够持续存在。即使我重新加载页面。我怎么能这样做?
答案 0 :(得分:0)
我不再提及回溯的原因,这主要是因为您没有使用global
关键字,因此全局变量无法从您的方法中正确绑定,因为其他已在评论中阐明/答案。
现在,我强烈建议你避免全局变量,特别是在多线程环境中,它们是邪恶的。当产生不同的线程时,你的代码将失败(即:多个用户)。
相反,我建议你熟悉为这个非常具体的任务创建的一些烧瓶工具,比如这个http://flask.pocoo.org/docs/0.12/api/#flask.Flask.app_ctx_globals_class。