【发布时间】:2012-11-22 10:50:30
【问题描述】:
在 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 不再影响任何重写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 或eval,您都可能做错了什么。所以我的问题是,这有什么问题吗?有更好的方法吗?
【问题讨论】:
-
您希望拥有可修改的默认值并不排除使用
import。为什么您认为需要使用exec来完成此操作?