【发布时间】:2020-03-09 20:30:57
【问题描述】:
我正在使用 base.py、local.py、prod.py 和 staging.py 来遵循 Django 设置最佳实践。
我的难题是是否可以接受代码重复。让我们举这个例子。我需要设置一个在大型固定值字典中使用的 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,但这不是一个好的本地开发体验。 - 最后,我可以在
local、staging,和prod中复制PACKAGE_CONF。
我对这些选项中的任何一个都不太满意。有编写精美设置文件经验的人可以提供更好的解决方案吗?
【问题讨论】:
标签: python django settings django-settings 12factor