跳转到主要内容

一个允许您使用12factor灵感的环境变量来配置Django应用程序的包。

项目描述

django-environ 是一个Python包,允许您使用十二因素方法使用环境变量来配置Django应用程序。

为此,它提供了一个简单的方法,使用从环境文件中获取并由操作系统提供的环境变量来配置Django应用程序

import environ
import os

env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)

# Set the project base directory
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Take environment variables from .env file
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

# False if not in os.environ because of casting above
DEBUG = env('DEBUG')

# Raises Django's ImproperlyConfigured
# exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')

# Parse database connection url strings
# like psql://user:pass@127.0.0.1:8458/db
DATABASES = {
    # read os.environ['DATABASE_URL'] and raises
    # ImproperlyConfigured exception if not found
    #
    # The db() method is an alias for db_url().
    'default': env.db(),

    # read os.environ['SQLITE_URL']
    'extra': env.db_url(
        'SQLITE_URL',
        default='sqlite:////tmp/my-tmp-sqlite.db'
    )
}

CACHES = {
    # Read os.environ['CACHE_URL'] and raises
    # ImproperlyConfigured exception if not found.
    #
    # The cache() method is an alias for cache_url().
    'default': env.cache(),

    # read os.environ['REDIS_URL']
    'redis': env.cache_url('REDIS_URL')
}

这个包的想法是统一很多做同样事情的工具包:从一个字符串中获取 os.environ,解析并转换为一些有用的Python类型变量。为了做到这一点,并使用12factor方法,一些连接字符串以URL的形式表达,因此这个包可以解析它并返回一个urllib.parse.ParseResult。这些来自os.environ的字符串是从一个.env文件加载的,并通过setdefault方法填充到os.environ中,以避免覆盖真正的环境变量。在《Two Scoops of Django》书籍中使用了类似的方法,并在12factor-django文章中进行了解释。

使用 django-environ,你可以停止创建许多未版本化的 settings_*.py 来配置你的应用程序。请查看 cookiecutter-django 以了解如何与Django项目一起使用的具体示例。

功能支持

  • 快速且容易的多环境部署

  • 使用.env文件变量填充 os.environ

  • 变量转换

  • 将URL变量分解为Django特定包的设置

  • 可选支持Docker风格的文件配置变量(使用 environ.FileAwareEnv 而不是 environ.Env

项目信息

django-environMIT / X11 License 下发布,其文档位于 Read the Docs,代码在 GitHub 上,最新的版本在 PyPI 上。

它在Python 3.6+上进行了严格的测试,并正式支持Django 1.11、2.2、3.0、3.1、3.2、4.0、4.1和4.2。

如果您想为 django-environ 贡献,我们非常欢迎!

支持

如果您有任何问题、任何评论,或者在 django-environ 中遇到任何无法解决的问题,请 提交问题

贡献

如果您想为 django-environ 贡献,请查看 当前问题。如果您想解决的问题或功能没有列出,请提交问题并着手解决。

错误报告

在提出问题之前,请确保您正在使用django-environ的最新版本。

请提供以下信息,以便我们能够尽快响应。

  • 您正在使用的软件包的相关版本。

  • 重现您的问题的步骤。

  • 如果有异常,请提供完整的堆栈跟踪。

  • 如果可能,请提供一个可执行的代码示例。

错误报告指南

  • 使用GitHub问题搜索 — 检查问题是否已被报告。

  • 检查问题是否已修复 — 尝试使用存储库中的最新 maindevelop 分支来重现它。

  • 隔离问题 — 创建一个简化的测试用例和一个实时示例。

一份好的错误报告不应让其他人需要追逐你以获取更多信息。请在报告中尽量详细。你的环境是什么?你将采取哪些步骤来重现问题?你使用的操作系统是否遇到问题?你期望的结果是什么?所有这些细节都将帮助人们修复任何潜在的错误。

功能请求

欢迎提出功能请求。但请花点时间了解你的想法是否符合项目的范围和目标。说服项目开发者这个功能的优点在于你。请尽可能提供详细信息和背景。

拉取请求

好的拉取请求——补丁、改进、新功能——非常有帮助。它们应该保持聚焦于范围,避免包含无关的提交。

如果你希望你的工作被考虑纳入项目,请遵循以下流程

  1. 检查开放的问题或打开一个新的问题,开始围绕一个功能想法或错误进行讨论。

  2. 在GitHub上克隆存储库,然后开始在develop分支(或从它分支)上进行更改。

  3. 编写一个测试,以显示错误已被修复或功能按预期工作。

  4. 发送拉取请求,并在合并和发布之前不断催促维护者。

如果你打算实现一个相当大的功能,我们很欢迎你打开一个GitHub上的问题,详细说明你的用例和预期解决方案,以讨论它可能对其他正在进行的工作产生的影响。

我们也感谢你花时间更新和编写你提交的任何更改的测试。

通过提交补丁,你同意允许项目所有者根据项目使用的相同许可证许可你的工作。

资源

发布信息

v0.11.2 - 2023年9月1日

修复

  • 由于#490,撤销“添加变量扩展”功能。

完整的变更日志.

安全策略

报告漏洞

如果你在django-environ中发现安全漏洞,请通过egrep@protonmail.ch给Serghei Iakovlev发送电子邮件。所有安全漏洞都将得到及时解决。

致谢

django-environ最初由Daniele Faraglia创建,并由Serghei Iakovlev维护。

贡献者名单的完整列表可以在GitHub上找到。

鸣谢

django-environ的存在离不开以下项目

项目详情


下载文件

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

源代码分发

django-environ-0.11.2.tar.gz (54.3 kB 查看哈希值)

上传时间 源代码

构建分发

django_environ-0.11.2-py2.py3-none-any.whl (19.1 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者