Flask全局变量在页面重新加载时不持久

2024-04-26 11:37:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的flask应用程序中使用一个全局变量:

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在我的应用程序运行期间一直保持。即使我重新加载页面。我该怎么做?在


Tags: namenoneapiappflaskhomereturnif
1条回答
网友
1楼 · 发布于 2024-04-26 11:37:01

我不会再提你回溯的原因了,这主要是因为你没有使用global关键字,所以全局变量不能像其他已经在注释/答案中阐明的那样从你的方法中正确绑定。在

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

相反,我建议您熟悉一些为这个非常具体的任务创建的flask实用程序,比如这个http://flask.pocoo.org/docs/0.12/api/#flask.Flask.app_ctx_globals_class。在

相关问题 更多 >