2011-04-07 58 views
3

我想知道是否有可能分开Django中的“本地”配置(静态本地路径,模板内容必须是绝对的,本地数据库信息等。 。)来自“全局”配置(URL,中间件类,安装的应用程序等),以便几个人可以在Git或SVN上使用同一个项目,而无需在每次提交完成时重写本地设置!Django settings.py:独立的本地和全局配置

谢谢!

+0

[如何在Django中管理本地和生产设置?](http://stackoverflow.com/questions/1626326/how-to-manage-local-vs-production-settings-in-django) – 2011-04-07 15:59:57

+0

另见http://stackoverflow.com/questions/88259/how-do-you-configure-django-for-simple-development-and-deloyment – 2011-04-07 16:00:15

回答

12

是的,当然。 settings.py文件只是Python,因此您可以在其中执行任何操作 - 包括动态设置,并导入其他文件以覆盖。

所以这里有两种方法。首先不是硬编码任何路径,而是动态计算它们。

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 
TEMPLATE_DIRS = [ 
    os.path.join(PROJECT_ROOT, "templates"), 
] 

等神奇的Python关键词__file__给出了路径添加到当前文件。

第二是具有local_settings.py文件SVN,这是在主settings.py的进口的外面和覆盖任何设置有:

try: 
    from local_settings import * 
except ImportError: 
    pass 

在try /除外,是确保即使local_settings不存在,它仍然有效。

当然,你可以尝试这些方法的组合。