Flask est un micro‐cadriciel 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 et 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.
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 de fournir de meilleures complétions et aides.
Le projet Flask utilise maintenant des outils comme le pre-commit, black, flake8 et 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 mode synchrone continuent de fonctionner comme avant. Les fonctionnalités ASGI 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) 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é au préalable.
# 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
$ pip install -U Flask
Exécution de l’exemple de code
$ flask run
Ouvrir un navigateur à l'adresse suivante
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 de "master" (maître) vers "main" (principal). GitHub simplifie cette transition, voir leur documentation pour les mainteneurs et les utilisateurs.
Si vous avez une copie locale du dépôt Flask, vous devez renommer votre branche principale de master
vers main
.
$ 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 ?
Aller plus loin
- Site officiel (292 clics)
- Les changements de la version 2.0.0 (140 clics)
# Typo
Posté par dovik (site web personnel) . Évalué à 2.
Merci d'avoir accepté la dépêche.
Il y reste une typo sur la ligne suivante : "Les vues en monde synchrone continuent de fonctionner comme avant."
À remplacer par "Les vues en mode synchrone continuent de fonctionner comme avant."
Et peut être inverser les paragraphes Démonstration et Renommage.
Merci.
[^] # Re: Typo
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Typo corrigée, merci.
# Dépêche Python pour les outils d'analyse statique
Posté par Philippe F (site web personnel) . Évalué à 10.
Je profite de cette fort belle dépêche sur Flask pour glisser qu'il y a une dépêche en cours de rédaction sur tous les outils d'analyse statique utilisés en Python: black, mypy, flake8, … Si vous voulez apporter votre pierre à l'édifice par vos retours, c'est ici que ça se passe.
# Je suis loin d'être fan de Python, pourtant ....
Posté par totof2000 . Évalué à 9.
Ceux qui me connaissent ici le savent, python est un langage que je n'apprécie pas vraiment. Cependant je dois admettre que, pour l'avoir utilisé, Flask est un outil très bien fait, et qui rend bien des services (relativement simple à prendre en main, doc plutôt bien faite, ….) quand on veut mettre en place une API Rest sans trop se rendre la tête. Après je ne sais pas ce que ça donne quand on monte en charge, mais pour les cas d'usage auxquels j'ai été confronté, il m'a bien rendu service.
# De Flask à Django
Posté par Romn . Évalué à 2.
J'ai fait mes premières armes d'utilisation de Python pour le web avec Flask (surtout pour de la visualisation de données scientifiques).
Mais finalement je suis rapidement passé à Django, ce n'est pas beaucoup plus compliqué à mettre en place, voir finalement plutôt moins parce que plein de choses sont déjà intégrées (authentification, interface d'administration, suivi de version des modèles, etc…).
Je comprend la philosophie de Flask de ne rien imposer et avoir un système très dépouiller, mais pour mon usage et avoir un truc fonctionnel rapidement, Django l'a totalement remplacé.
Commencer par Flask m'a surement permis d'apprendre Django plus facilement.
[^] # Re: De Flask à Django
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Je pense qu'il faut une matrice croisée des fonctionnalités. Et choisir ce qui couvre nos besoins sans trop de plus. On peut par exemple ne pas avoir besoin d'interface d'administration et de système d'authentification, et du coup Django est un peu overkill non ?
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# De Flask à Fastapi
Posté par Augu5te . Évalué à 2.
Merci pour la dépêche !
J'ai utilisé pendant plusieurs années Flask pour fournir une api REST. Lorsque j'ai voulu la rendre compatible avec Openapi j'ai un temps considéré l'utilisation de Flask-RESTX puis j'ai découvert FastAPI.
J'ai été très agréablement surpris par ce projet, la documentation est très claire et la liste des fonctionalités (pour la réalisation d'API est super) est très complète. Venant de Flask l'adaptation était très rapide beaucoup de concepts et approches sont similaires.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.