Flask中的上下文

2018-07-02  本文已影响0人  萧瑟空间

本文仅为作者自学之用,系统为macOS,不保证信息准确。

Flask的上下文使用

写惯了java或者python等oo语言的同学也许会烦恼为什么在flask的主文件中不能给app = Flask(__name__)添加成员变量或者初始化函数呢?我也好奇这个问题,同时也很希望可以解决这个需求,可惜并无所获。没有办法写成成员变量以及初始化函数就导致了一个问题,那就是web.py这个程序中如果需要实例化某些类就需要写在最外层,系统一经启动就会开始运行,这样会带来诸多的问题:


这里提出的解决方案仅能解决第一种情况,第二种情况如果以后发现了解决方案也会补上。
这里就要用到app.app_context()了。

app = Flask(__name__)
with app.app_context():
    db = Database()
    re = db.get_redis()
    conn = db.get_mongo()
    config = Config()

with app.app_context():语句下,即便服务还未真正的跑起来,却已经有了app实例了,在这里以app实例以某种方式传入其下的类初始化函数中可以解决这些类中无法读取current_app的问题,从而代码可以正确执行。

上一篇 下一篇

猜你喜欢

热点阅读