我正试图在烧瓶应用程序中使用一个全局变量:
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
在我的应用程序运行期间一直存在。即使我重新加载页面。我该怎么做?
我不再提及回溯的原因,这主要是因为您没有使用global
关键字,因此全局变量无法从您的方法中正确绑定,正如注释/答案中已经阐明的那样。
现在,我强烈建议您避免全局变量,特别是在多线程环境中,它们是邪恶的。当产生不同的线程(即:多个用户)时,您的代码会失败得很惨。
相反,我建议您熟悉为这个非常具体的任务创建的一些flask utils,比如这个http://flask.pocoo.org/docs/0.12/api/#flask.Flask.app_ctx_globals_class.