
看了一些文章都在教怎么设置 flask 的配置, 但都没说到怎么合理的用
# config.py class Config(object): A = 'apple' B = 'banana' # ... # service.py import os from app import create_app app = create_app(os.getenv('FLASK_CONFIG') or 'default') 现在在代码的各处都可能使用到这些配置
文档里的方式是
from service import app func(app.config['A']) var = app.config['B'] # ... 这种使用方式是所有使用到配置的都要导入 app, 那还不如直接导入 config, 那这么做是为什么呢?
也想问下大家是怎么用的?
1 linw1995 2020-09-02 23:43:18 +08:00 开源轮子 dynaconf 可以了解一下 |
2 qqxx520 2020-09-03 06:16:50 +08:00 via iPhone 把配置放到 app.config 似乎成了一个约定,核心的配置还是要放到 app.config, 一些外围的或者自己定义的配置当然可以随便组织,这也是 flask 的灵活性。个人认为,没必要把配置搞得那么复杂,有 DevConfig, TestingConfig 等,像 django 默认提供的 settings.py 那样就挺好,如果要调整一些参数,可以在.env 文件里调整. |
3 prolic 2020-09-03 06:26:53 +08:00 via Android 怎么舒服怎么来呗,我都是 cOnf= Config();from config import conf;conf.get('addr') |
4 plko345 OP @prolic 用 conf 的话直接 conf.A 就好了,比 app.config 方便很多 |
5 vZexc0m 2020-09-03 08:32:14 +08:00 via Android 直接把 config 当做变量传入 create_app 也行 |
6 renmu123 2020-09-03 08:51:58 +08:00 via Android 我是觉得只要能把几个开发环境区分开,你怎么搞 config 都没事,目前这种形式可能是社区认为的最佳实践,你不认可也完全没问题 |
7 ratazzi 2020-09-03 08:56:16 +08:00 via iPhone current_app 了解下 |
8 ebingtel 2020-09-03 09:11:08 +08:00 @renmu123 +1……根据 env 决定 app 加载哪个 config……后续通过 current_app.config 去获取配置项, 而不是拿着 config 对象 传来传去 |
11 plko345 OP 感觉还是导入 config 方便, 直接 将配置作为属性, 还能自动补全, 不用写 [''] |
12 Zeeland4v 255 天前 可以试试用 conftier 来配置,框架集成会方便很多。https://conftier.zeeland.top/ |