toml|yaml|json|ini|py
et également des chargeurs personnalisables.[default, development, testing, production]
init, list, write, validate, export
.$ pip install dynaconf
$ 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
CONSEIL : Vous pouvez sélectionner
toml|yaml|json|ini|py
surdynaconf init -f <fileformat>
toml est le format par défaut et également le format le plus recommandé pour la configuration.
.
├── config.py # This is from where you import your settings object (required)
├── .secrets.toml # This is to hold sensitive data like passwords and tokens (optional)
└── settings.toml # This is to hold your application settings (optional)
Sur le fichier config.py
Dynaconf init génère le code suivant
from dynaconf import Dynaconf
settings = Dynaconf (
envvar_prefix = "DYNACONF" , # export envvars with `export DYNACONF_FOO=bar`.
settings_files = [ 'settings.yaml' , '.secrets.yaml' ], # Load files in the given order.
)
CONSEIL : Vous pouvez créer les fichiers vous-même au lieu d'utiliser la commande
init
comme indiqué ci-dessus et vous pouvez donner le nom de votre choix au lieu duconfig.py
par défaut (le fichier doit être dans votre chemin python importable) - Voir plus d'options que vous pouvez passer à l'initialiseur de classeDynaconf
sur https://dynaconf.com
Mettez vos paramètres sur settings.{toml|yaml|ini|json|py}
username = " admin "
port = 5555
database = { name = ' mydb ' , schema = ' main ' }
Mettez les informations sensibles sur .secrets.{toml|yaml|ini|json|py}
password = " secret123 "
IMPORTANT : la commande
dynaconf init
place le.secrets.*
dans votre.gitignore
pour éviter qu'il ne soit exposé sur des dépôts publics, mais il est de votre responsabilité de le garder en sécurité dans votre environnement local. La recommandation pour les environnements de production est également d'utiliser le en prise en charge du service Hashicorp Vault pour le mot de passe et les jetons.
En option, vous pouvez désormais utiliser des variables d'environnement pour remplacer les valeurs par exécution ou par environnement.
# override `port` from settings.toml file and automatically casts as `int` value.
export DYNACONF_PORT=9900
Sur votre code, importez l'objet settings
from path . to . project . config import settings
# Reading the settings
settings . username == "admin" # dot notation with multi nesting support
settings . PORT == 9900 # case insensitive
settings [ 'password' ] == "secret123" # dict like access
settings . get ( "nonexisting" , "default value" ) # Default values just like a dict
settings . databases . name == "mydb" # Nested key traversing
settings [ 'databases.schema' ] == "main" # Nested key traversing
Vous pouvez faire beaucoup plus, lisez la documentation : http://dynaconf.com
Les principales discussions ont lieu dans l'onglet Discussions. Apprenez-en davantage sur la manière de vous impliquer dans le guide CONTRIBUTING.md.
Si vous recherchez quelque chose de similaire à Dynaconf à utiliser dans vos projets Rust : https://github.com/rubik/hydroconf
Et un merci tout particulier à Caneco pour le logo.