====== 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)