Dynaconf 是一个 Python 的第三方模块,旨在成为在 Python 中治理配置的最佳抉择。
它能够从各种起源读取设置,包含环境变量、文件、服务器配置等
它实用于任何类型的 Python 程序,包含 Flask 和 Django 扩大
1.筹备
开始之前,你要确保 Python 和 pip 曾经胜利装置在电脑上
而后,请抉择以下任一种形式输出命令装置依赖:
- Windows 环境 关上 Cmd ( 开始-运行-CMD )
- MacOS 环境 关上 Terminal ( command + 空格输出 Terminal )
- 如果你用的是 VSCode 编辑器 或 Pycharm,能够间接应用界面下方的 Terminal
pip install dynaconf
2.初步应用DynaConf
在你的我的项目的根目录中运行 dynaconf init 命令。
cd path/to/your/project/dynaconf init -f toml
会有相似如下的输入,阐明初始化实现:
⚙️ Configuring your Dynaconf environment------------------------------------------ The file `config.py` was generated.️ settings.toml created to hold your settings. .secrets.toml created to hold your secrets. the .secrets.* is also included in `.gitignore`beware to not push your secrets to a public repo. Dynaconf is configured! read more on https://dynaconf.com
刚刚初始化的时候咱们抉择了 toml 格局。实际上你还能够抉择 toml|yaml|json|ini|py ,不过 toml 是默认的,也是最举荐的配置格局。
初始化实现后会创立以下文件:
.├── config.py # 须要被导入的配置脚本├── .secrets.toml # 像明码等敏感信息配置└── settings.toml # 利用配置
初始化实现后你就能够编写你的配置,编辑settings.toml:
key = "value"a_boolean = falsenumber = 1234a_float = 56.8a_list = [1, 2, 3, 4]a_dict = {hello="world"}[a_dict.nested]other_level = "nested value"
而后就能够在你的代码中导入并应用这些配置:
from config import settingsassert settings.key == "value"assert settings.number == 789assert settings.a_dict.nested.other_level == "nested value"assert settings['a_boolean'] is Falseassert settings.get("DONTEXIST", default=1) == 1
如果是明码等敏感信息,你能够配置在 .secrets.toml 中:
password = "s3cr3t"token = "dfgrfg5d4g56ds4gsdf5g74984we5345-"message = "This file doesn't go to your pub repo"
.secrets.toml 文件会被主动退出到 .gitignore 文件中,这些信息不会被上传到Git仓库上。
同时,DYNACONF还反对带前缀的环境变量:
export DYNACONF_NUMBER=789export DYNACONF_FOO=falseexport DYNACONF_DATA__CAN__BE__NESTED=valueexport DYNACONF_FORMATTED_KEY="@format {this.FOO}/BAR"export DYNACONF_TEMPLATED_KEY="@jinja {{ env['HOME'] | abspath }}"
3.高级应用
你还能够在Flask或Django中应用DynaConf,以Django为例,第一步要先确保曾经设置 DJANGO_SETTINGS_MODULE 环境变量:
export DJANGO_SETTINGS_MODULE=yourproject.settings
而后在 manage.py 雷同文件夹下运行初始化命令:
dynaconf init -f yaml
而后依照终端上的阐明进行操作:
Django app detected⚙️ Configuring your Dynaconf environment------------------------------------------️ settings.yaml created to hold your settings. .secrets.yaml created to hold your secrets. the .secrets.yaml is also included in `.gitignore`beware to not push your secrets to a public repoor use dynaconf builtin support for Vault Servers.⁉ path/to/yourproject/settings.py is found do you want to add dynaconf? [y/N]:
答复 y:
Now your Django settings are managed by Dynaconf Dynaconf is configured! read more on https://dynaconf.com
在 Django 上,举荐的文件格式是yaml,因为它能够更轻松地保留简单的数据结构,然而你仍然能够抉择应用 toml、json、ini 甚至将你的配置保留为 .py 格局。
初始化 dynaconf 后,在现有的settings.py底部蕴含以下内容:
# HERE STARTS DYNACONF EXTENSION LOADimport dynaconf # noqasettings = dynaconf.DjangoDynaconf(__name__) # noqa# HERE ENDS DYNACONF EXTENSION LOAD (No more code below this line)
当初,在你的 Django 视图、模型和所有其余中央,你当初能够失常应用 django.conf.settings,因为它已被 Dynaconf 设置对象替换。
from django.conf import settingsdef index(request): assert settings.DEBUG is True assert settings.NAME == "Bruno" assert settings.DATABASES.default.name == "db" assert settings.get("NONEXISTENT", 2) == 2
当初,通过批改 manage.py 雷同文件夹下的配置文件,就能让配置全局失效了,最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回 “Python 编程学习圈”,发送 “J” 即可收费取得