====== Configuration ====== Doc: [[https://flask.palletsprojects.com/en/2.0.x/config/]] ===== 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** : FLASK_APP = run.py FLASK_ENV = development DEBUG = True En **production** : 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). 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 [[python:generer_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** : 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)