Outils pour utilisateurs

Outils du site


Panneau latéral

Plan du Site:

python:flask:configuration

Ceci est une ancienne révision du document !


Configuration

Configurer son application

Juste après la création de l'objet app, charger le contenu de l'un ou l'autre fichier .py en fonction de l'environnement :

app = Flask(__name__)
 
if app.config['env'] == 'development':
    app.config.from_object('config_dev')
 
if app.config['env'] == 'production':
    app.config.from_object('config_prod')    

Les deux fichiers sont situés à la racine de l'application.

config_prod.py
import os
 
DEBUG = True
 
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
DBPATH   = os.path.join(BASE_DIR, 'data/example.db')
 
SECRET_KEY = "... clé secrète pour le développement ..."
config_dev.py
import os
 
DEBUG = False
 
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
DBPATH   = '/var/data/production.db'
 
SECRET_KEY = "... clé secrète pour la production ..."

Utiliser un fichier .env

Installer python-dotenv dans le Virtual Environment :

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

Créer un fichier .env à la racine du projet :

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

:!: Le fichier .env doit être dans le .gitignore sinon il sera publié sur GitHub en même temps que le code :!:

/home/marc/flaskapp/.env
FLASK_ENV=development
PGUSER=marc
PGPASSWORD=my_password

Flask va détecter la présence du fichier .env et charger certaines valeurs depuis celui-ci (par exemple FLASK_ENV).

Pour le reste, charger les variables d'environnement lors de l'initialisation de l'application :

__init__.py
import os
from flask import Flask, ...
from dotenv import load_dotenv
 
...
 
app = Flask(__name__)
 
base_dir = os.path.dirname(app.root_path)
load_dotenv(os.path.join(base_dir, '.env'))

Ensuite il suffit de les utiliser dans le code de cette façon :

import os
 
username = os.getenv('PGUSER')
password = os.getenv('PGPASSWORD')

Générer une Secret Key

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.1630559087.txt.gz · Dernière modification: 2021/09/02 05:04 (modification externe)