class: center, middle #  --- class: center, middle # Flask est un
**micro-framework** web
écrit en
**python** --- # Pourquoi Python? ### Syntaxe lisible et puissante ### Peu de code - Syntaxe économique - *Batteries included* - Écosystème très actif ### Donc - Développement ultra-rapide - Maintenance simplifiée ### Bonus - Langage généraliste --- background-image: url(images/ilovepython.jpg) # Pourquoi Python? (la vraie raison) --- class: center, middle # *Micro*-framework? --- background-image: url(images/bigknife.jpg) ??? - Routage des URLs - ORM - Système de *templates* - Interface d'admin automatique - Formulaires avec validation - Gestion du cache - Internationalisation - Serveur de développement - Implémentation WSGI ou serveur de production - ... --- background-image: url(images/smallknife.jpg) ??? - Routage - Implémentation WSGI/serveur de production - ... (pas de consensus) ## Il y a donc une continuité entre les micro-frameworks et les frameworks! --- class: middle .quotation[ The “micro” in microframework means Flask aims to keep the core simple but extensible. Flask won’t make many decisions for you, such as what database to use. Those decisions that it does make, such as what templating engine to use, are easy to change. Everything else is up to you, so that Flask can be everything you need and nothing you don’t. ] .source[ https://flask.palletsprojects.com/en/stable/design/#what-does-micro-mean ] --- # Qu'est-ce que *flask*? .quotation[ Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. It began as a simple wrapper around Werkzeug and Jinja, and has become one of the most popular Python web application frameworks. ] .source[ https://github.com/pallets/flask/ ] Fournit: - Routing - WSGI En plus, notamment: - Jinja 2 templates - Serveur de développement avec débogueur - Tests, sessions, ... - Documentation! ??? - demo sur localhost:5000/error - sans --debug, traceback en console - avec --debug + werkzeug :-) --- class: center, middle # Gestion des dépendances --- ## Méthode "historique": venv Développement ```bash $ python -m venv my_great_app $ source my_great_app/bin/activate $ pip install flask $ pip install pygal $ pip freeze > requirements.txt ``` Déploiement ```bash $ python -m venv my_great_app $ source my_great_app/bin/activate $ pip install -r requirements.txt ``` --- ## Méthode "historique": venv Permet de - recréer un environnement de manière simple et prédictible - tester les mises à jour sans tout casser - mettre à jour des projets séparément Mais - Processus compliqué - Facile de faire des erreurs/oublis - Pas de distinction entre dépendances explicites et implicites Solution: utiliser - ~~virtualenv~~ - ~~virtualenvwrapper~~ - ~~pipenv~~ - ~~poetry~~ - ~~conda~~ - uv --- ## Méthode d'avenir: uv - Rapide - Souple - Simple d'utilisation Les trois sous-commandes à connaître absolument: ```bash $ uv init $ uv add flask $ uv run main.py ``` Repose essentiellement sur - `pyproject.toml` - `uv.lock` - `.python-version` --- class: center, middle # [Ce qu'on va faire...](http://localhost:5000) --- # Et tout ça en... #  --- class: center, middle # À vous de jouer!
[https://matthieuamiguet.ch/flask](https://matthieuamiguet.ch/flask)