Managing multiple settings.py files
Possible Duplicate:
How to manage local vs production settings in Django?
我已经成功地在Apache的Web服务器上使用
我想就如何管理多个
1 2 3 | $ hg archive myproject.tbz2 $ cd /path/of/apache/web/project/location $ bzip2 -db /home/myself/myproject/myproject.tbz2 | tar -xvf - |
工作正常。但我发现自己在操纵多个
我想我的问题是:在部署有关多个
我使用的设置模块不是单个文件:
1 2 3 4 5 6 7 | settings/ __init__.py _base.py _servers.py development.py production.py testing.py |
1 2 | from _servers import get_server_type exec("from %s import *" % get_server_type()) |
然后其他文件看起来有点像(
1 2 3 | DEBUG=False TEMPLATE_DEBUG=False from _base import * |
在每个文件中,我都输入了仅适用于此服务器类型的设置。
最常见的技巧是同时维护settings.py和local_settings.py(每个环境一个)文件。
环境不可知设置进入settings.py,在文件底部,您将从local_settings.py导入
1 2 3 4 | try: from local_settings import * except ImportError: pass |
您可以覆盖适当的local_settings.py中的任何settings.py设置。
django-admin.py/manage.py都接受
就我个人而言,我只是不签入settings.py。相反,我签入多个设置文件(dev_settings、prod_settings等),并根据需要象征性地将它们链接到settings.py。这样,如果我简单地签出我的应用程序,它将无法运行,直到我考虑哪个设置文件是适当的,并将该设置文件放在适当的位置。
我听到的另一个建议是,如果存在dev_settings.py,动态导入settings.py,但我不特别喜欢它。虽然这可能更方便,但我担心如果不在dev ou settings.py文件中查找可能存在或可能不存在的覆盖值,就很难读取settings.py并知道实际的设置。
我的首选方法是使用configparser基于单个设置或环境变量加载单独的ini文件。总之,在django wiki中,有许多不同的选项可以描述:http://code.djangoproject.com/wiki/splitsettings