我脑子下午也是秀逗了,其实根本不是上下文的问题,
你初始化类使用 app.config 的内容根本不需要上下文。
既然你有 create_app 那就好办了,我写了个 demo 试了一下,是可以成功初始化类的:
总共有三个文件:
app.py ,
run.py ,
example.pyapp.py:
from flask import Flask
def create_app():
____app = Flask(__name__)
____app.config['EX_URL'] = '
www.example.com'
____return app
- - - - -
run.py:
from app import create_app
app = create_app()
- - - - -
example.py:
from run import app
class Foo:
____URL = app.config['EX_URL']
- - - - -
测试结果:
>>> from example improt Foo
>>> Foo.URL
>>> '
www.example.com'
所以根本问题是,你这种类初始化完全不该用 current_app,毕竟类初始化的时候 app 没有在运行。
而 current_app 本质是一个上下文应用的代理,没有 app 在运行自然代理不到任何东西,你被这个报错误导了。
所以其实你要解决的就是循环引用的问题。