跳转到主要内容

将Django设置组织到多个文件和目录中。轻松覆盖和修改设置。使用通配符和可选设置文件。

项目描述

django-split-settings logo


wemake.services test codecov Docs Python Version wemake-python-styleguide

将Django设置组织到多个文件和目录中。轻松覆盖和修改设置。在设置文件路径中使用通配符,并将设置文件标记为可选。

阅读这篇博客文章获取更多信息。还可以查看这个示例项目

要求

虽然这个包可能适用于大多数版本的django,但我们官方支持

  • 4.2
  • 5.0
  • 5.1

这个包本身没有依赖。

如果您需要支持旧版的python / django版本,请考虑使用较旧的django-split-settings版本。

安装

pip install django-split-settings

用法

将现有的settings.py替换为您Django设置组成的组件列表。最好创建一个包含所有文件的设置包。

以下是一个最小示例

from split_settings.tools import optional, include

include(
    'components/base.py',
    'components/database.py',
    optional('local_settings.py')
)

在示例中,从名为components/的子目录中按照该顺序包含了文件base.pydatabase.py。如果存在,则包含同一目录下的local_settings.py

注意:将本地上下文传递给每个文件,因此每个后续文件都可以访问并修改先前文件中声明的设置。

我们还制作了一个深入的教程

技巧和技巧

您可以在文件路径中使用通配符

include('components/my_app/*.py')

请注意,文件是按照glob返回它们的顺序包含的,可能类似于ls -U列出的顺序。文件不是按字母顺序排列的。

您可以通过简单地导入它们来在环境设置中修改常见的设置

# local_settings.py
from components.base import INSTALLED_APPS

INSTALLED_APPS += (
  'raven.contrib.django.raven_compat',
)

更新BASE_DIR

django create-project命令将在您的settings.py中创建一个名为BASE_DIR的变量,该变量通常用于定位静态文件、媒体文件和模板。

# Created by django create-project
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles/")
MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles/")

BASE_DIR的表达式意味着:获取当前文件(settings.py)的路径,获取父文件夹(无论您将项目命名为什么),获取父文件夹(项目的根目录)。因此STATIC_ROOT将被评估为/staticfiles(其中/表示项目的根目录/repo)。

使用django-split-settings后,settings现在是一个模块(而不是文件),所以os.path.dirname(os.path.dirname(os.path.abspath(__file__)))将评估为/whatever-you-named-your-project,而不是/

为了修复此问题,需要将BASE_DIR设置为/whatever-you-named-your-project的父文件夹

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

你想贡献吗?

阅读CONTRIBUTING.md文件。

版本历史

查看CHANGELOG.md文件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django_split_settings-1.3.2.tar.gz (5.8 kB 查看哈希值)

上传时间

构建分布

django_split_settings-1.3.2-py3-none-any.whl (6.4 kB 查看哈希值)

上传时间 Python 3

支持者