Python 如何使用Flash基金会导入应用程序?
我正在使用我的新烧瓶应用程序开始 init.py文件有一个方法:Python 如何使用Flash基金会导入应用程序?,python,flask,Python,Flask,我正在使用我的新烧瓶应用程序开始 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
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变量来访问应用程序中模块中的应用程序配置,该怎么办?我无法在请求上下文之外使用当前的应用程序。创造一个是丑陋的
我的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服务器,但我不想在包内使用它 现在对我有效的是什么: 如果没有当前的_应用程序(我想是在请求上下文之外),就使用这样的东西
app = Flask(__name__)
app.config.from_object('appname.settings_file.DevConfig')
print(app.config)
更详细地了解一下为什么需要在请求上下文之外访问应用程序的配置可能会有所帮助——从目前的情况看,这听起来像是我想在应用程序的配置中保存一些常量数据,比如基本路径或一些其他常量。文件应保留在settings.py文件中,不应散布在整个包中。因此,我需要app变量。当我直接导入设置时,flask的配置所做的所有级联操作都会被忽略。因此,您的程序中有依赖于应用程序配置的模块或包级别变量,但无法放入应用程序的配置中?我有依赖于驻留在settings.py中的配置的逻辑。我想为我的应用程序导入当前配置(Prod、Debug、Test等),因为我想集中应用程序的配置并使用现有的配置实现。但我无法访问app.config属性。当我想错的时候,给我一点提示就好了:)