Django settings.py:分离本地和全局配置

时间:2011-04-07 14:52:56

标签: python django git configuration project-management

我想知道是否可以从“全局”配置(URL)中分离Django中的“本地”配置(本地路径为静态,模板内容必须是绝对的,本地数据库信息等...) ,中间件类,安装的应用程序等...)这样几个人可以通过Git或SVN在同一个项目上工作,而不必每次提交都重写本地设置!

谢谢!

2 个答案:

答案 0 :(得分:13)

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

所以这里有两种方法。第一种是不对任何路径进行硬编码,而是动态计算它们。

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

等。神奇的Python关键字__file__提供了当前文件的路径。

第二个是在SVN之外有一个local_settings.py文件,该文件是在主settings.py的 end 导入的,并覆盖那里的任何设置:

try:
    from local_settings import *
except ImportError:
    pass

try / except是为了确保即使local_settings不存在它仍然有效。

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

答案 1 :(得分:0)

您可以将配置拆分为不同的文件。由于它们是用python编写的,你只需使用import local_settings从其他设置文件导入设置,你甚至可以将导入放在条件中,以根据某些上下文导入本地设置。

查看文档:{​​{3}}