一个允许您利用12factor灵感的环境变量来配置您的Django应用程序的包。
项目描述
django-environ 是一个Python包,允许您使用Twelve-factor方法论,通过从环境文件和操作系统获取的环境变量来配置您的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 来配置你的应用程序。有关与 Django 项目一起使用的具体示例,请参阅 cookiecutter-django。
功能支持
快速简单的多环境部署
使用 .env 文件变量填充 os.environ
变量转换
将 URL 变量展开为 Django 特定的设置包
可选支持 Docker 风格的基于文件的配置变量(使用 environ.FileAwareEnv 而不是 environ.Env)
项目信息
django-environ 在 MIT / X11 许可证 下发布,其文档位于 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 和 5.0。
如果您想为 django-environ 做贡献,我们非常欢迎!
支持
如果您有任何问题、评论,或者在 django-environ 中遇到无法解决的问题,请 提交问题。
贡献
如果您想为 django-environ 做贡献,请查看 当前问题。如果有您想要但未列出的错误或功能,请创建一个问题并着手解决。
错误报告
在提出问题之前,请确保您正在使用 django-environ 的最新版本。
请在问题中提供以下信息,以便我们能够尽快回应。
您正在使用的包的相关版本。
重现您问题的步骤。
如果有异常,请提供完整的堆栈跟踪。
如有可能,请提供一个可执行的代码示例。
错误报告指南
使用 GitHub 问题搜索 —— 检查问题是否已被报告。
检查问题是否已被修复 —— 尝试使用存储库中的最新 main 或 develop 分支来重现它。
隔离问题 —— 创建一个简化的测试用例和一个实时示例。
一个好的错误报告不应该让别人需要追着你索要更多信息。请在报告中提供尽可能多的细节。你的环境是什么?执行哪些步骤可以复现问题?操作系统遇到了什么问题?你期望的结果是什么?所有这些细节都将帮助人们修复任何潜在的错误。
功能请求
我们欢迎功能请求。但请花点时间了解你的想法是否符合项目的范围和目标。说服项目的开发者这个功能的优点是你的责任。请尽可能提供详细的信息和背景。
拉取请求
好的拉取请求——补丁、改进、新功能——非常有帮助。它们应该保持范围集中,避免包含不相关的提交。
如果你想让你的工作被考虑加入项目,请遵循以下流程
查找开放的问题或创建新的问题,以开始关于功能想法或错误的讨论。
在GitHub上Fork仓库,开始修改develop分支(或从它创建分支)。
编写一个测试来展示错误已被修复或功能按预期工作。
发送一个拉取请求,并不断催促维护者直到它被合并并发布。
如果你打算实现一个相当大的功能,我们非常感谢你通过GitHub打开一个问题,详细说明你的用例和预期解决方案,以讨论它可能对正在进行的工作产生的影响。
我们还感谢你花时间更新和编写你提交的任何更改的测试。
通过提交补丁,你同意允许项目所有者以项目使用的相同许可证许可你的工作。
资源
发布信息
v0.11.3 - 0-Undefined-2023
更改
正式支持Python 3.12。
默认禁用内联注释处理,因为可能存在副作用。虽然这个功能本身很有用,但项目的理念要求它不应该默认对所有用户启用 #499。
安全策略
报告漏洞
如果你在django-environ中发现了一个安全漏洞,请通过egrep@protonmail.ch给Serghei Iakovlev发送电子邮件。所有安全漏洞都将得到及时处理。
致谢
django-environ最初由Daniele Faraglia创建,目前由Serghei Iakovlev维护。
所有贡献者的完整列表可以在GitHub上找到。
感谢
django-environ的存在离不开以下项目
项目详情
下载文件
下载适合你平台的文件。如果你不确定该选择哪个,请了解安装包的更多信息。
源分发
构建分发版
fdemmer-django-environ-0.11.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ed3f9e1bf308cfca3456d8dbb91353bd976bbda3791c156024a5f5a0817a2c3f |
|
MD5 | 274ebf939ad8a81769bdc0f65f8397bf |
|
BLAKE2b-256 | da630e72892468d8422ea9675961397c5df39cc8f3c7a2f4f5ab182cbcf65198 |
fdemmer_django_environ-0.11.3-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 32931ec9d27e34e031670891515baa36c0bf1e9c3882c55b953b2cc6bee013e0 |
|
MD5 | 3752e869042a246a093ccfff74225178 |
|
BLAKE2b-256 | 17d3df3bfad022f8305c2cc4851b19b83ee35ff44f8165d012863b735467bacc |