Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal
Apprendre Flask : Le Guide Ultime
3 min de lecture
Gratuit

Le dernier niveau de professionnalisme : la Factory. Au lieu de créer app globalement (app = Flask(__name__)), on le crée DANS une fonction.

Pourquoi ?

  1. Tests : On peut créer plusieurs instances de l'app avec des configs différentes (une pour le test, une pour le dev).
  2. Propreté : On évite les dépendances circulaires (A importe B qui importe A).

Structure recommandée

/mon_projet
    /app
        __init__.py  <-- La Factory est ici
        /auth
            routes.py
        /main
            routes.py
    run.py           <-- Le point d'entrée

Le fichier app/__init__.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

# On initialise les extensions SANS l'app
db = SQLAlchemy()
login_manager = LoginManager()

def create_app(config_file='config.py'):
    app = Flask(__name__)
    
    # Charger la config
    app.config.from_pyfile(config_file)
    
    # Lier les extensions à cette app spécifique
    db.init_app(app)
    login_manager.init_app(app)
    
    # Enregistrer les Blueprints
    from app.auth.routes import auth_bp
    from app.main.routes import main_bp
    
    app.register_blueprint(auth_bp)
    app.register_blueprint(main_bp)
    
    return app

Le fichier run.py (à la racine)

from app import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)

C'est l'architecture utilisée par 99% des projets Flask sérieux.