Flask传递全局变量

时间:2018-03-12 00:19:13

标签: python flask

我试图将带有一些全局变量的烧瓶应用上下文传递给嵌套的api上下文。

run.py <= Start the flask application via app.run()
    app/
       __init__.py
       api/
          __init__.py
          controllers.py

应用/ __初始化__。PY

from flask import Flask
from app.api.controllers import api

app = Flask(__name__)
app.register_blueprint(api, url_prefix='/api')

main_dict = {"a":"info1", "b":"info2}

应用/ API / controllers.py

from flask import Blueprint, jsonify
from app import app, main_dict

api = Blueprint('api', __name__)

@api.route('/')
def test():
    return jsonify({"status":"OK"})

它会抛出以下错误消息:

ImportError: cannot import name 'app'

谢谢!

1 个答案:

答案 0 :(得分:0)

您已创建循环依赖项。

app想要导入app.api.controllers,但想要从app导入。您应该采取的措施是创建一个包含main_dict的新模块,并在appapp.api.controllers中导入该模块:

# app/__init__.py
from .main_dict import main_dict
from .api.controllers import api

# app/main_dict.py
main_dict = {'a': 'A'}

# app/api/__init__.py

# app/api/controllers.py
from flask import current_app as app
from ..main_dict import main_dict

如果您需要访问app/__init__.py以外的应用,建议的方法是使用from flask import current_app