You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤Dynaconf内部设置,仅获取自定义配置参数?

问题:如何在Dynaconf中仅获取自定义配置参数?

运行以下代码后,输出结果除了settings.toml里显式定义的自定义配置外,还包含RENAMED_VARS、SETTINGS_MODULE、PROJECT_ROOT、*_FOR_DYNACONF等Dynaconf自动生成的内部设置,想知道有没有办法只提取自定义配置,排除这些内部项:

from .config import settings
for k,v in settings.items():
  print(k,v)

解决方案

方法1:过滤字典排除内部键

利用Dynaconf的as_dict()方法获取完整配置字典,再通过规则过滤掉内部设置。大部分内部键以_开头,可直接过滤:

from .config import settings

# 过滤掉以下划线开头的键
custom_config = {k: v for k, v in settings.as_dict().items() if not k.startswith('_')}
for k, v in custom_config.items():
    print(k, v)

如果需要更精准的控制,可手动指定要排除的内部键集合:

from .config import settings

# 列出需要排除的Dynaconf内部键
EXCLUDED_INTERNAL_KEYS = {'RENAMED_VARS', 'SETTINGS_MODULE', 'PROJECT_ROOT', 'ENVVAR_PREFIX_FOR_DYNACONF'}
custom_config = {k: v for k, v in settings.items() if k not in EXCLUDED_INTERNAL_KEYS}

方法2:直接访问自定义配置键

如果清楚自己定义的配置键名,直接通过属性或get()方法访问,完全不会涉及内部设置:

from .config import settings

# 直接访问自定义配置
print(settings.MY_CUSTOM_SETTING)
# 或者用get方法,支持默认值
print(settings.get('MY_CUSTOM_SETTING', default='default_value'))

方法3:映射到自定义类

定义一个空类,用populate_obj()方法将自定义配置映射到类属性中,内部设置不会被映射:

from .config import settings

class MyCustomConfig:
    pass

# 将自定义配置映射到类属性
settings.populate_obj(MyCustomConfig)

# 访问自定义配置
print(MyCustomConfig.MY_CUSTOM_SETTING)

内容的提问来源于stack exchange,提问作者RubenLaguna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:57:11