我使用base.py
、local.py
、prod.py
和遵循 Django 设置最佳实践staging.py
。
我的难题是是否可以接受代码重复。让我们举这个例子。我需要设置一个在大型固定值字典中使用的 URL 来配置包。
local.py
CONF_URL = 'hard coded local value'
prod.py
CONF_URL = os.environ['CONF_URL']
staging.py
CONF_URL = 'some other hard coded value'
然后我有类似的代码
PACKAGE_CONF = {
'CONF_URL': CONF_URL,
'foo1': bar,
'foo2': bar,
'foo3': bar,
'foo4': bar,
'foo5': bar,
}
- 我不能输入
PACKAGE_CONF
,base.py
因为我们base
是从叶子设置文件中导入的,而不是相反。 - 我可以写一些东西来发布过程
PACKAGE_CONF
,比如使用 env 文件,但这似乎不必要地复杂。 - 我可以强制用户
CONF_URL
从环境中获取,但这不是一个好的本地开发体验。 - 最后我可以复制
PACKAGE_CONF
,local
和.staging,
prod
我对这些选项中的任何一个都不满意。有编写精美设置文件经验的人可以提供更好的解决方案吗?