问题
我对以下多个 Django settings.py 文件的处理是否合理(透明、安全等)?
我的方法
我有一个settings.py
和一个settings_local.py
。settings.py
受版本控制,而 asettings_local.py
不受版本控制。最后,如果可用,settings.py
它会尝试导入。settings_local.py
我对这种方法的理论是,我可以保留我的默认/安全设置,settings.py
然后简单地推送到生产环境进行部署。在部署时,settings_local.py
将不存在,并且不使用其仅限本地的设置。但是,当settings_local.py
存在本地工作并使用其仅本地设置时。
设置.py
DEBUG = False
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
)
# other settings...
try:
from settings_local import *
except ImportError:
pass
settings_local.py
from settings import *
DEBUG = True
MIDDLEWARE_CLASSES += (
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
# other settings...
我对这种方法的担忧是它们都导入了另一个。我认为这不符合循环导入的条件,但可以作为在不同情况下考虑合并这些文件的指标。
settings_local.py
导入的原因settings.py
是我可以添加到已经定义的变量,同时遵守 DRY 原则,例如添加一个新条目MIDDLEWARE_CLASSES
而不完全重新定义它。
谢谢!
解决方案
最终,我放弃了上述方法。尝试解决这个问题对我来说是一个有趣且内容丰富的过程,但是,我的合并方法有太多缺点。
对于将来发现此问题的人们,最合适的方法可能是该主题的 wiki 页面中概述的解决方案之一,正如 @DrTyrsa 和 @Mark Lavin 所指出的那样,谢谢!