三个 from_ 方法各自读什么、怎么出错?类配置里的列表会不会互相污染?环境变量里到底存配置值还是文件路径?这篇逐个试。
from_object("settings"): {'DEBUG': True, 'SECRET_KEY': 'from-module', 'ITEMS': ['a', 'b']} | 小写与下划线开头 lower/_private 在 config 里: False False | 函数 func: False | 类 Nested: False
from_object(模块对象):SECRET_KEY = from-module
from_object(类 Dev(继承 Base)):DEBUG=True PAGE=10 TAGS=['t']
from_object(类 Prod):DEBUG=False PAGE=100 TAGS=['t']
from_object(实例 Dev()):DEBUG=True PAGE=10 TAGS=['t']
from_object("settings_dir.base.Dev")(带点的路径指向类):DEBUG = True PAGE = 10上一篇:Flask Config 加载顺序;下一篇:环境变量配置。
a1 改了 TAGS 后,a2 的 TAGS = ['t', 'polluted'] | Base.TAGS = ['t', 'polluted'] | 同一个对象: True
(from_pyfile 里的 print 也会执行)
加载 dyn.cfg 之后: {'HOME_SET': True, 'COMPUTED': 42, 'ITEMS': [0, 2, 4]}
文件不存在:FileNotFoundError: [Errno 2] Unable to load configuration file (No such file or directory): '<项目>/nope.cfg'
文件不存在 + silent=True:返回 False
语法错误:SyntaxError: '(' was never closed (bad_syntax.cfg, line 1)环境变量没设置 → RuntimeError: The environment variable 'APP_SETTINGS' is not set and as such configuration could not be loaded. Set this variable and make it point to a configuration file silent=True → False (from_pyfile 里的 print 也会执行) 设置 APP_SETTINGS=<路径> 后 → True | COMPUTED = 42
tomllib: {'TITLE': 'toml 标题', 'PORT': 8080, 'DB': {'HOST': 'h'}}
json 里的小写键 title: False | 大写 UP: True (from_file 内部调用 from_mapping,同样只收大写键)
from_mapping 同一份 json: {'UP': 1} | title 在吗: False from_mapping({"A": 1, "b": 2}, C=3, d=4) → {'A': 1, 'b': None, 'C': 3, 'd': None}
update / 赋值 不过滤大小写: {'b': 2, 'd': 4}