根据im是在开发环境中还是在生产环境中,如何配置我的settings.py以使用不同的STATIC_ROOT和STATIC_URL?
发布于 2011-04-07 11:49:22
有几种方法可以做到这一点,最简单的是再导入一个文件(通常是local_settings.py)并覆盖主设置(生产设置在主settings.py中,本地更改在local_settings.py中)
代码:
try:
from local_settings import *
except ImportError:
pass另一种选择是保留几个独立的配置文件,如settings_prod.py、settings_dev.py等,每个文件都有自己的一组配置设置,但这是保持同步的噩梦。但是,将部分设置移动到单独的文件(如conf/db.py、conf/app_data.py、conf/locale.py、conf/logging.py等)然后在设置文件中导入它们会有很大帮助。这些设置通过指定-s或--settings选项使用,并将模块名称作为参数(不带.py部件)。
我已经看到了第二个选项的一些扩展,这组设置是根据环境变量/路径/机器名自动选择的。因此,只有一个settings.py和一个代码来选择要加载的设置。这个选项很好用,所以您不需要一直指定-s。
最后但并非最不重要的一点是使用django-admin.py而不是manage.py。这两个文件的不同之处在于,manage.py为特定项目设置了一个DJANGO_SETTINGS_MODULE环境变量。但是,如果您的开发需要一个虚拟环境,您可以将本地DJANGO_SETTINGS_MODULE设置为指向正确的设置文件,然后使用django-admin.py,而不需要指定配置。
项目之间的切换也应该很容易。
我确信还有更多的选项,但至少您可以看到有哪些选项:)
发布于 2011-04-07 09:45:56
通常我有两个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 += ()。
https://stackoverflow.com/questions/5574979
复制相似问题