{{tag>dev python flask web api}} ====== Flask ====== Flask n'impose aucune arborescence, cependant lorsque les projets grossissent ou pour pouvoir travailler en équipe, il est judicieux d'adopter certaines recommandations : /home/user/Projects/aAppProject ├── myapp/ # le paquetage de l'application flask │ ├── __init__.py │ ├── db.py │ ├── schema.sql │ ├── auth.py │ ├── blog.py │ ├── templates/ # les modèles de type jinja2 │ │ ├── base.html │ │ ├── auth/ │ │ │ ├── login.html │ │ │ └── register.html │ │ └── blog/ │ │ ├── create.html │ │ ├── index.html │ │ └── update.html │ └── static/ # les ressources statiques │ └── style.css ├── tests/ # les tests unitaires │ ├── conftest.py │ ├── data.sql │ ├── test_factory.py │ ├── test_db.py │ ├── test_auth.py │ └── test_blog.py ├── .venv/ # L'environnement virtuel Python ├── README.md # ├── install └── MANIFEST.in Pour lancer l'application : cd /home/user/Projects/aAppProject flask --app myapp run --debug Si le fichier est nommé ''app.py'' ou ''wsgi.py'' flask l'exécute automatiquement, l'argument ''%%--app%%'' n'est pas nécessaire. ===== La fonction "Factory" ===== Pour pouvoir lancer automatiquement une application Flask : * On place les fichiers de l'application dans un paquetage ; * Le fichier ''__init__.py'' contient soit l'instanciation d'un objet de type Flask, soit une fonction retournant cet objet. Cette fonction est désignée **factory** par défaut flask s'attend à ce qu'elle soit appelée ''create_app''. Dans ce cas on peut lancer l'application avec la commande : flask --app aAppPackage run --debug # Si la fonction factory a un autre nom que create_app utiliser la syntaxe package:factory_function flask --app aAppPackage:another_factory_name run --debug ===== Références ===== * https://stackoverflow.com/questions/53566832/access-app-decorator-in-flask-using-factory-pattern * https://realpython.com/flask-project/