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

nba*_*lle 5 python git django configuration project-management

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

谢谢!

Dan*_*man 13

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

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

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = [
    os.path.join(PROJECT_ROOT, "templates"),
]
Run Code Online (Sandbox Code Playgroud)

Magic Python关键字__file__给出了当前文件的路径.

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

try:
    from local_settings import *
except ImportError:
    pass
Run Code Online (Sandbox Code Playgroud)

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

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