看了一些文章都在教怎么设置 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 1
current_app 了解下
|
8
ebingtel 2020-09-03 09:11:08 +08:00 1
@renmu123 +1……根据 env 决定 app 加载哪个 config……后续通过 current_app.config 去获取配置项, 而不是拿着 config 对象 传来传去
|
11
plko345 OP 感觉还是导入 config 方便, 直接 将配置作为属性, 还能自动补全, 不用写 ['']
|