我正在使用Flask foundation开始我的新烧瓶应用。
init .py文件有一个方法:
def create_app(object_name, env="prod"):
"""
An flask application factory, as explained here:
http://flask.pocoo.org/docs/patterns/appfactories/
Arguments:
object_name: the python path of the config object,
e.g. sservice.settings.ProdConfig
env: The name of the current environment, e.g. prod or dev
"""
app = Flask(__name__)
app.config.from_object(object_name)
app.config['ENV'] = env
#init the cache
cache.init_app(app)
debug_toolbar.init_app(app)
#init SQLAlchemy
db.init_app(app)
login_manager.init_app(app)
# Import and register the different asset bundles
assets_env.init_app(app)
assets_loader = PythonAssetsLoader(assets)
for name, bundle in assets_loader.load_bundles().iteritems():
assets_env.register(name, bundle)
# register our blueprints
from controllers.main import main
app.register_blueprint(main)
return app
在manage.py中导入。
但是如果我需要使用此app变量来访问应用程序中的模块中的应用程序配置?我不能在请求上下文之外使用current_app。创造一个是丑陋的。
我需要在 models.py 文件中添加一个app变量:
在models.py
中# how to import? Below doesn't work
from appname import app
# access config
print(app.config)
我无法调用此方法create_app,因为它应该只调用一次来创建应用程序。您无需在任何时候导入该应用。我该怎么解决这个问题?
我只想在包外面使用create_app()一次给它wsgi服务器,但我不想在包中使用它。
答案 0 :(得分:0)
现在为我工作的是什么:
只要没有current_app(我想在请求上下文之外),只需使用这样的东西
app = Flask(__name__)
app.config.from_object('appname.settings_file.DevConfig')
print(app.config)