从Flask蓝图导入应用程序设置

3
我正在使用以下代码加载配置变量。现在我想在蓝图中使用这些配置变量。我对最佳实践有点模糊,所以我在这里提出来。
在我的app.py中:
app.config.from_object('config')

我的config.py文件包含以下内容:

import os
UPLOAD_FOLDER = 'xxx/xxx'
ALLOWEDEXTENSIONS = set(['png'])

那么在我的蓝图中,我应该如何获取例如ALLOWEDEXTENSIONS

在我的蓝图中,我有:

import app as app
mybp = Blueprint('bp', __name__)
print(app.config['ALLOWEDEXTENSIONS'])      # doesn't work
print(app.config.Config.ALLOWEDEXTENSIONS)  # doesn't work

如何处理导入全局cfg设置以及如何获取变量?

如果我在app.py__main__之后执行print(app.config),它会打印我的变量,然而在蓝图中,当我执行相同操作时,这些变量不再存在于app.config中,因此我无法获取这些变量。

main中,我可以在打印后获取:

<Config {'JSON_AS_ASCII': True, 'USE_X_SENDFILE': False,  'ALLOWEDEXTENSIONS': 'pdf' ....}>

但是从我的蓝图中,尽管使用 from app import app 导入,我仍然无法看到所有这些变量:

<Config {'JSON_AS_ASCII': True,...}> # None of my variables
2个回答

2

current_app.config['...'] 应该是可用的


这是我得到的:AttributeError: 'module'对象没有属性'config' - disruptive

2

您正在导入 app 模块,但是您需要从该模块中导入 app 对象。

from app import app
print(app.config['ALLOWEDEXTENSIONS'])     

我已经尝试过了,我修改了我的问题。 - disruptive
你在app.py中确切地放置了app.config.from_object('config')代码吗?以及你如何在蓝图文件中启动它? - Ivan Velichko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接