【问题标题】:Django settings.py: Separate local and global configurationDjango settings.py:分离本地和全局配置
【发布时间】:2011-07-31 18:48:21
【问题描述】:

我想知道是否可以将 Django 中的“本地”配置(静态的本地路径、必须是绝对的模板内容、本地 DB 信息等)与“全局”配置(URL 、中间件类、已安装的应用程序等...),这样几个人就可以通过 Git 或 SVN 处理同一个项目,而无需在每次提交完成时重写本地设置!

谢谢!

【问题讨论】:

标签: python django git configuration project-management


【解决方案1】:

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

查看文档:http://docs.djangoproject.com/en/dev/topics/settings/

【讨论】:

    【解决方案2】:

    是的,当然。 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 不存在它仍然有效。

    当然,您可以尝试结合使用这些方法。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多