一尘不染

如何在Flask中共享全局应用程序对象?

flask

我正在使用flask,并尝试执行以下操作。

我已经定义了一个main.py文件,通过它我可以运行我的应用程序,即python main.py

from flask import Flask
from view import tags

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

我定义了一个名为view的程序包,在其中将声明不同的view模块,每个模块都有自己的路由。view.tags.py

from flask import Flask
app = Flask(__name__)

@app.route('/e')
def hello_world2():
    return 'Hello World!'

因此,我需要在main.py中具有用于运行服务器的全局应用程序对象,以及在包的视图类中用于注册路由的全局对象。那么,如何创建全局应用程序对象并在所有类之间共享呢?


阅读 1356

收藏
2020-04-07

共1个答案

一尘不染

可以从flask导入current_app。它存储对全局应用程序对象的引用。

from flask import current_app as app

def home():
    return render_template('base.html', name=app.name)
2020-04-07