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
Pour charger le fichier .env, il faut que le module python-dotenv soit installé.
source venv/bin/activate (venv)$ pip install python-dotenv
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
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 Générer une Secret Key
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')
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']
Ceci sort la liste des valeurs vers la console:
for item in app.config.items(): print("%-30s => %s" % item)