我正在使用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
,但这并不是良好的本地开发经验。 - 最后,我可以在
PACKAGE_CONF
,local
和staging,
中复制prod
。
我对这些选项都不满意。有写精美设置文件经验的人可以提供更好的解决方案吗?