django配置文件,如何根据开发或生产环境配置路径

时间:2011-04-07 01:38:38

标签: django

如何根据开发环境或生产环境中的im来配置我的settings.py以使用不同的STATIC_ROOT和STATIC_URL?

2 个答案:

答案 0 :(得分:3)

有几种方法可以执行此操作,最简单的方法是导入一个以上的文件(通常为local_settings.py)并覆盖主要设置(生产设置位于主settings.py中,local_settings.py中的本地更改})

代码:

try:
    from local_settings import *
except ImportError:
    pass

其他选项是保留几个单独的配置文件,如settings_prod.pysettings_dev.py等,每个配置文件都有自己的配置设置,但这是一个保持同步的噩梦。但是,将设置的部分移动到单独的文件(例如conf/db.pyconf/app_data.pyconf/locale.pyconf/logging.py(等),然后在设置文件中导入它们会有很大帮助。 通过指定-s--settings选项使用这些设置,模块名称作为参数(不包含.py部分)。

我看到了第二个选项的一些扩展,根据环境变量/路径/机器名称自动选择了一组设置。所以只有一个settings.py代码可以选择要加载的设置。这个选项很好,所以你不需要一直指定-s

最后但并非最不重要的是使用django-admin.py代替manage.py。这两个文件之间的区别在于manage.py正在为特定项目设置DJANGO_SETTINGS_MODULE环境变量。但是如果你有例如您可以将本地DJANGO_SETTINGS_MODULE设置为指向正确的设置文件,然后使用django-admin.py而无需指定配置。

项目之间的切换也应该很容易。

我确信没有更多的选择,但至少你可以看到它们是什么:)

答案 1 :(得分:0)

通常我有两个settings.py文件,local_settings.py和settings.py,local_settings.py用于设置应该是环境本地的变量。通常db,路径,调试设置都在这里。此文件永远不会进入版本控制。有一个local_settings.py.tmpl文件,其中包含需要设置的设置。

然后在settings.py中我有from local_settings import *注意,如果你在local_settings文件中使用INSTALLED_APPS或任何基于元组的设置,则需要调整settings.py.例如,在settings.py中将INSTALLED_APPS = ()更改为INSTALLED_APPS += ()