0

在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您可能做错了什么。所以我的问题是,这有什么问题吗?有更好的方法吗?

4

2 回答 2

1

有一个更好的方法:导入INSTALLED_APPSlocal_settings.py复制它,然后添加到副本中:

import settings

INSTALLED_APPS = settings.INSTALLED_APPS[:] + ['debug_toolbar']
于 2012-12-04T18:14:02.833 回答
1

这是我的技术:

设置.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',)
于 2012-12-04T18:16:12.940 回答