首页 > 解决方案 > 未加载 YAML 文件中的 Flask 应用程序配置

问题描述

我的应用需要这样的配置 =app.config['LDAP_BASE_DN'] = 'OU=users,dc=example,dc=org'我想将此配置传递给 YAML 文件,然后让应用使用它。我可以使用加载文件,PyYAML或者config_with_yaml问题是我无法将应用程序设置为将其用作配置。它应该基于“ https://exploreflask.com/en/latest/configuration.html

我加载我的配置,cfg = config.load("/Users/pjose/Project/dev_maintenance/backend/config.yaml")然后我设置我的应用程序配置以从 yaml 文件中获取数据,app.config.from_object(cfg)并通过调用app.config["LDAP_USERNAME"]它应该设置配置,但它不起作用。

YAML 文件:

LDAP_USERNAME: 'CN=Hermes Conrad,ou=people,dc=planetexpress,dc=com'

我收到此错误:

  File "/Users/pjose/Project/dev_maintenance/backend/dev_maintenance/__init__.py", line 32, in <module>
    app.config["LDAP_USERNAME"]
KeyError: 'LDAP_USERNAME'

标签: python-3.xflaskyaml

解决方案


我终于可以完成这项工作

问题是我没有将YAML文件中的值传递给,app.config["LDAP_USERNAME"]因为在我使用的文档中没有对这个主题的引用,尽管它会通过这样声明来获取值。

因此,有关如何使用YAML文件设置应用程序配置的示例是:

配置.yaml

SQLALCHEMY_DATABASE_URI: "sqlite://"
SQLALCHEMY_TRACK_MODIFICATIONS : False

然后使用 PyYAML lib 或其他获取解析 yaml 所需的值:

data = yaml_loader.yaml("/Users/pjose/Project/dev_maintenance/backend/config.yaml")
app.config.from_object(data)
app.config['SQLALCHEMY_DATABASE_URI'] = data.setdefault('SQLALCHEMY_DATABASE_URI')

推荐阅读