在django中,使用local_settings.py
文件来补充settings.py
非常常见,这样每台机器都可以有不同的设置。通常人们会这样做。
try:
from local_settings import *
except ImportError:
print "No local settings found!"
但是设置文件通常包含大型列表,例如INSTALLED_APPS
。如果我想添加一个应用程序,我宁愿不将整个列表复制到local_settings.py
并修改它(使代码不太可读,更新settings.py
不再影响任何重写的机器{ {1}})。所以我想我可以这样做:
INSTALLED_APPS
现在try:
f = open('local_settings.py','r')
exec f.read()
except IOError:
print "No local settings found!"
不再需要重写整个local_settings.py
变量:
INSTALLED_APPS
我的印象是,只要您使用INSTALLED_APPS.append('debug_toolbar')
或exec
,您可能会做错事。所以我的问题是,这有什么不对,有更好的方法吗?
答案 0 :(得分:1)
有一种更好的方法:在INSTALLED_APPS
中导入local_settings.py
,复制它,然后添加到副本中:
import settings
INSTALLED_APPS = settings.INSTALLED_APPS[:] + ['debug_toolbar']
答案 1 :(得分:1)
这是我的技巧:
<强> settings.py 强>:
try:
from local_settings import *
except ImportError:
sys.exit("FATAL: No local settings file found.")
<强> local_settings.py 强>
import settings
settings.INSTALLED_APPS += ('django_extensions',)