URL: https://linuxfr.org/news/sortie-de-flask-2-0-0 Title: Sortie de Flask 2.0.0 Authors: dovik Benoît Sibaud Date: 2021-05-12T14:45:42+02:00 License: CC By-SA Tags: flask, python, cadriciel, web et framework Score: 4 Flask est un micro‐[cadriciel](https://fr.wikipedia.org/wiki/Framework) Web pour Python publié sous licence BSD. Il est conçu pour permettre une prise en main rapide et facile, tout en offrant la possibilité d'évoluer vers des applications complexes. Il a commencé comme une simple « enveloppe » autour de [Werkzeug](https://www.palletsprojects.com/p/werkzeug/) et [Jinja](https://www.palletsprojects.com/p/jinja/) et est devenu l'un des cadriciel web Python les plus populaires. Flask suggère mais n'impose aucune dépendance ou plan de projet. C'est au développeur de choisir les outils et les bibliothèques qu'il souhaite utiliser. Il existe de nombreuses extensions fournies par la communauté qui facilitent l'ajout de nouvelles fonctionnalités. La version 2 est sortie le 11 mai 2021 soit 3 ans après la [version 1](https://linuxfr.org/news/sortie-de-flask-1-0). ---- [Site officiel](https://www.palletsprojects.com/p/flask/) [Les changements de la version 2.0.0](https://flask.palletsprojects.com/en/2.0.x/changes/#version-2-0-0) ---- Les points notables ------------------- Flask est maintenant uniquement compatible avec Python 3.6 et plus. Retirer le code de compatibilité pour les versions précédentes de Python a rendu Flask plus rapide et plus facile à maintenir tout en simplifiant les contributions. Des annotations complètes de type ont été ajoutées au code. Cela rend la vérification des types de votre code plus utile, et permet aux [EDI](https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement) de fournir de meilleures complétions et aides. Le projet Flask utilise maintenant des outils comme le pre-commit, [black](https://black.readthedocs.io/en/stable/), [flake8](https://flake8.pycqa.org/en/latest/) et [pyupgrade](https://github.com/asottile/pyupgrade) pour s'assurer que le code et les nouveaux ajouts de code suivent le même style que l'ensemble du projet. Prise en charge du mode asynchrone pour les vues et autres rappels tels que les gestionnaires d'erreur, défini avec `async def`. Les vues en monde synchrone continuent de fonctionner comme avant. Les fonctionnalités [ASGI](https://asgi.readthedocs.io/en/latest/) comme les "web sockets" ne sont pas encore prises en charge. Les modèles de projets peuvent être imbriqués dans d'autres modèles de projets, permettant une approche par couche plus fine pour organiser les applications. Ajout de décorateurs de chemins pour les méthodes HTTP communes. Par exemple, `@app.post("/login")` est un raccourci pour `@app.route("/login", methods=["POST"])`. En ligne de commande, les erreurs sont plus explicites lorsqu'une application ne peut être chargée. Le serveur de développement fait apparaître les erreurs immédiatement, elles ne sont reportées que lors des rechargements. Il existe maintenant une fonction `Config.from_file` qui permet de charger n'importe quel format de fichier de configuration. La commande `flask shell` permet maintenant la complétion par tabulation, comme le shell `python` basique. Les navigateurs géreront dorénavant le cache des fichiers statiques en fonction du contenu et non plus pendant 12 heures. Cela signifie que des changements sur du contenu statique (comme des styles [CSS](https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade)) seront visibles immédiatement au rechargement sans nécessiter de vider le cache du navigateur. Démonstration de Flask ---------------------- Il est nécessaire d'avoir [Python (3.6 au minimum) d'installé](https://www.python.org/downloads/) au préalable. ```python # Enregistrer ça dans un fichier nommé app.py from flask import Flask, escape, request app = Flask(__name__) @app.route('/') def hello(): name = request.args.get("name", "les moules") return f'Bonjour, {escape(name)} !' ``` ### Installation (ou mise à jour) et exécution Les commandes précédées d'un `$` sont à exécuter dans un terminal dans le même dossier que le fichier précédemment enregistré. #### Installation ou mise à jour ```shell $ pip install -U Flask ``` #### Exécution de l’exemple de code ```shell $ flask run ``` #### Ouvrir un navigateur à l'adresse suivante [http://127.0.0.1:5000/](http://127.0.0.1:5000/) ### Arrêter la démonstration Appuyer sur `CTRL+c` dans le terminal pour arrêter le serveur Renommage de la branche par défaut dans le gestionnaire de version de code -------------------------------------------------------------------------- Comme d'autres projets (notamment PSF, CPython, Django mais aussi bien d'autres), le projet Flask a renommé sa branche principale dans [son dépôt de code](https://github.com/pallets/flask) de "_master_" (maître) vers "_main_" (principal). GitHub simplifie cette transition, voir leur [documentation pour les mainteneurs et les utilisateurs](https://docs.github.com/en/github/administering-a-repository/renaming-a-branch). Si vous avez une copie locale du dépôt Flask, vous devez renommer votre branche principale de `master` vers `main`. ```shell $ git branch -m master main $ git fetch origin $ git branch -u origin/main main $ git remote set-head origin -a ``` Si vous faites une installation depuis l'adresse d'une archive GitHub comme `https://github.com/pallets/flask/archive/refs/heads/master.zip`, vous devrez renommer ce lien pour utiliser "main". Utilisation de Flask -------------------- Et vous, vous l'utilisez comment Flask ? Où peut-être lui préférez-vous un autre cadriciel web ? Où peut-être trouvez-vous, vous aussi, ce mot "cadriciel" très moche ? Que vous manque t-il dans Flask pour l'utiliser si ce n'est pas déjà le cas ?