URL: https://linuxfr.org/news/sortie-de-flask-1-0
Title: Sortie de Flask 1.0
Authors: dovik
Davy Defaud, Lucas, claudex, ZeroHeure, NĂżco, bubarđŠ„ et BenoĂźt Sibaud
Date: 2018ćčŽ04æ27æ„T11:48:27+02:00
License: CC By-SA
Tags: flask, python, framework et 42
Score: 42
Flask est un microâcadriciel Web pour Python publiĂ© sous licence BSD. Il est basĂ© sur [Werkzeug](https://www.palletsprojects.com/p/werkzeug/), [Jinja2](https://www.palletsprojects.com/p/jinja/), [MarkupSafe](https://www.palletsprojects.com/p/markupsafe/) et [ItsDangerous](https://www.palletsprojects.com/p/itsdangerous/).

Bien que stable depuis longtemps, Flask passe finalement en version 1.0, huit ans aprÚs le début de son développement. Cette version aura demandé un an de travail et propose un grand nombre de modifications.
----
[Site officiel](http://flask.pocoo.org/)
[Page PyPI](https://pypi.org/project/Flask/)
[Liste des modifications](http://flask.pocoo.org/docs/1.0/changelog/)
[Code source (GitHub)](https://github.com/pallets/flask)
[Annonce officielle](https://www.palletsprojects.com/blog/flask-1-0-released/)
[PrĂ©cĂ©dente dĂ©pĂȘche sur Flask (juin 2016)](https://linuxfr.org/news/sortie-de-flask-0-11)
----
Liste des modifications
-----------------------
- abandon de la prise en charge de Python 2.6 et 3.3 ;
- lâinterface en ligne de commande est plus flexible ([voir la documentation en anglais pour en savoir plus](http://flask.pocoo.org/docs/1.0/cli/)) ;
- si `python-dotenv` est installĂ©, lâinterface en ligne de commande chargera les variables dâenvironnement depuis les fichiers `.flaskenv` et `.env` plutĂŽt que dâavoir Ă les exporter dans chaque nouveau terminal ;
- le serveur de dĂ©veloppement est par dĂ©faut Ă multiples fils dâexĂ©cution (_multiâthread_) pour permettre de traiter des requĂȘtes concurrentes pendant le dĂ©veloppement ;
- `flask.ext`, prĂ©cĂ©demment rendu obsolĂšte, est maintenant complĂštement supprimĂ© ; les importations dâextensions se font dorĂ©navant par le nom de leur paquet ;
- les messages dâerreur en mode dĂ©bogage sont beaucoup plus explicites lorsque le dĂ©veloppeur tente dâaccĂ©der Ă des clefs manquantes dans `request.form` ;
- un truc trop bien avec les _error handlers_, qui sont maintenant recherchĂ©s par code puis par classe dâexception, dâabord dans le `blueprint` puis dans lâapplication ; cela donne un contrĂŽle plus prĂ©visible, avec notamment la possibilitĂ© de soulever une `HTTPException` ;
- le comportement de `app.logger` a Ă©tĂ© grandement simplifiĂ© et devrait ĂȘtre plus facile Ă adapter. Le systĂšme de journalisation se nomme toujours `flask.app`, il ajoute un gestionnaire (_handler_) seulement sâil nây en a pas dâenregistrĂ© ; en aucun cas il ne supprime de gestionnaires existants ([voir la documentation, en anglais, pour en savoir plus](http://flask.pocoo.org/docs/1.0/logging/)) ;
- `test_client` a maintenant un argument `json` pour envoyer des donnĂ©es JSON et lâobjet `Response` a maintenant une mĂ©thode `get_json` pour dĂ©coder les donnĂ©es comme du JSON dans les tests ;
- un nouveau `test_cli_runner` a Ă©tĂ© ajoutĂ© pour tester lâinterface en ligne de commande dâune application ;
- plusieurs parties de la documentation ont Ă©tĂ© réécrites pour ĂȘtre plus claires et pertinentes, câest un effort continu ;
- le tutoriel et lâexemple correspondant ont Ă©tĂ© réécrits, ils utilisent un plan structurĂ© et permettent dâaller dans le dĂ©tail de chaque aspect afin dâaider les nouveaux utilisateurs Ă Ă©viter les problĂšmes communs.
Plusieurs autres modifications ont été faites et apparaissent dans la [liste complÚte des modifications (en anglais)](http://flask.pocoo.org/docs/1.0/changelog/).
Correctif de sécurité pour JSON
-------------------------------
PrĂ©cĂ©demment, Flask dĂ©codait les entrĂ©es JSON en utilisant le type de contenu de la requĂȘte. Bien que ces entrĂ©es devaient ĂȘtre uniquement codĂ©es en UTF-8, Flask Ă©tait indulgent. Vu quâil existe en Python des codages non textuels, cela pouvait entraĂźner une utilisation de la mĂ©moire non dĂ©sirĂ©e. DorĂ©navant, Flask dĂ©tectera le codage des donnĂ©es JSON seulement parmi les formats Unicode pris en charge et nâautorisera plus dâautres types de codage.
Démonstration du cadriciel
--------------------------
Voici le fichier `hello.py` :
```python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Bonjour les moules< !" ``` Installation (ou mise Ă jour) et exĂ©cution ------------------------------------------ * installation ou mise Ă jour depuis PyPI avec pip : `$ pip install -U Flask` * exĂ©cution de lâexemple de code : `$ FLASK_APP=hello.py flask run` * aller voir