Outils pour utilisateurs

Outils du site


Panneau latéral

Plan du Site:

python:flask:configuration

Configuration

Structure du projet

Les fichiers .env et config.py sont positionnées à la racine du projet :

/home/marc/flaskapp
├── .env
├── app
│   ├── __init__.py
│   └── ...
├── config.py
└── ...

:!: Les fichiers .env et config.py doivent être dans le .gitignore sinon ils seront publiés sur le dépôt en même temps que le code :!:

Installation des dépendances

Pour charger le fichier .env, il faut que le module python-dotenv soit installé.

source venv/bin/activate
(venv)$ pip install python-dotenv

Écrire le fichier .env

Contient la configuration de base de Flask

En développement :

.env
FLASK_APP = run.py
FLASK_ENV = development
DEBUG     = True

En production :

.env
FLASK_ENV = production
DEBUG     = False

Écrire le fichier config.py

C'est ici que je place toute la configuration spécifique à l'application (qui n'est pas propre à Flask).

config.py
import os
 
SECRET_KEY  = "...(clé secrète)..."
 
BASE_DIR    = os.path.abspath(os.path.dirname(__file__))
PATH_UPLOAD = os.path.join(BASE_DIR, 'data/upload/')

Pour générer la clé secrète, voir la page Générer une Secret Key

Lecture de la configuration

Les valeurs lues par Flask depuis le fichier .env se trouvent déjà dans l'objet app.config

Nous allons y intégrer les valeurs lues depuis le fichier config.py :

__init.py__
from flask import Flask
 
app = Flask(__name__)
 
# ceci va intégrer les valeurs de "config.py"
app.config.from_object('config')

Accéder à la configuration

base_dir = app.config['BASE_DIR']

Depuis un Blueprint, utiliser l'objet current_app :

from flask import current_app
 
base_dir = current_app.config['BASE_DIR']

Afficher le contenu de la configuration

Ceci sort la liste des valeurs vers la console:

for item in app.config.items():
    print("%-30s => %s" % item)
python/flask/configuration.txt · Dernière modification: 2021/09/22 17:03 (modification externe)