Flask - 全局变量不会持续进行页面重新加载

时间:2017-11-14 21:52:11

标签: python flask global-variables

我正在尝试在我的烧瓶应用程序中使用全局变量:

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能够持续存在。即使我重新加载页面。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我不再提及回溯的原因,这主要是因为您没有使用global关键字,因此全局变量无法从您的方法中正确绑定,因为其他已在评论中阐明/答案。

现在,我强烈建议你避免全局变量,特别是在多线程环境中,它们是邪恶的。当产生不同的线程时,你的代码将失败(即:多个用户)。

相反,我建议你熟悉为这个非常具体的任务创建的一些烧瓶工具,比如这个http://flask.pocoo.org/docs/0.12/api/#flask.Flask.app_ctx_globals_class