01 Découverte de Flask
Flask
Flask est un microframework pour Python basé sur Werkzeug, Jinja 2 et de bonnes intentions. Et avant de demander: c'est sous licence BSD!
Micro framework ?
Micro ne signifie pas que l'ensemble de votre application doit tenir au sein d'un fichier de code source unique ou encore que Flask est pauvre en fonctionnalités.
Le terme micro framework signifie que le coeur de Flask est et restera simple mais extensible.
Flask n'inclut pas de niveau d'abstraction pour les base de données, de validation de formulaire ou n'importe quels librairies existant déjà et faisant parfaitement le job.
A la place celui-ci permet l'ajout d'extension et donc de fonctionnalités. Il ne contient que le support des requêtes HTTP, le routing et le templating, tout le reste est à votre appréciation.
Convention
Python et Flask se basent sur la convention plutôt que la configuration, ainsi les templates et les fichiers statiques sont dans des sous-répertoires ayant respectivement pour noms templates
et static
.
Installation
Flask recommande désormais d'utiliser la dernière version de Python 3, il convient au minimum d'avoir la version 3.4 de Python.
Dépendances
Lors de l'installation de Flask les dépendances suivantes seront automatiquement installées:
Environnement virtuel
Nous l'avons déjà vu, il est conseillé d'utiliser un environnement virtuel Python pour gérer nos projets et leurs dépendances.
Pour créer l'environnement virtuel de notre projet:
mkdir meeple_street
cd meeple_street
pipenv --python 3
Puis pour installer Flask:
pipenv shell
pipenv install Flask
Démarrage rapide
Assez parler, il est temps de se mettre au développement.
Une application minimal
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
Mais que fait ce code ?
- D'abord on importe la classe
Flask
, une instance de cette classe sera notre application WSGI. - Puis nous créeons une instance de cette classe en lui passant en argument le nom du module.
- Ensuite nous utilisons le décorateur
route()
pour informer Flask que telle url doit invoquer telle fonction. - Enfin nous créeons la fonction
hello_world
qui correspondera automatiquement à la route nommée hello_world.
Lancement du serveur de développement
- Sauvegardez le code précédent dans un fichier
app.py
à la racine de votre projet, - Lancez le serveur de développement via la commande suivante:
flask run
- Rendez vous sur 127.0.0.1:5000
Félicitations ! Vous venez de créer votre première application Flask !
Routing
Les applications Web modernes utilisent des URL significatives pour faciliter la vie des utilisateurs. Les utilisateurs sont plus susceptibles d'aimer une page et de revenir si la page utilise une URL explicite dont ils peuvent se souvenir.
Utilisez le décorateur route()
pour lier une fonction à une URL.
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
Règles variables
Vous pouvez ajouter des sections variables à une URL en les marquant avec <nom_variable>
. Votre fonction reçoit alors la variable <nom_variable>
en tant qu'argument. Vous pouvez éventuellement utiliser un convertisseur pour spécifier le type de l'argument tel que <convertisseur: nom_variable>
.
@app.route('/say_hello/<name>')
def say_hello(name):
return "Hello %s" % name
@app.route('/multiply/<int:facteur_gauche>/<int:facteur_droite>')
def multiply(facteur_gauche, facteur_droite):
return facteur_gauche * facteur_droite
Voici les types de convertisseurs (extrait de la documentation de flask):
string | (default) accepts any text without a slash |
int | accepts positive integers |
float | accepts positive floating point values |
path | like string but also accepts slashes |
uuid | accepts UUID strings |
À vous de jouer
- Créer une route
/
(index) qui affiche 'Jurassic Park index', - Créer une route
/say_hello/Ben
qui affiche 'Hello Ben' (Ben étant un paramétre passé via l'url), - Créer une route pour effectuer les 4 opérations arithmétique simple (division, soustraction, multiplication, addition).