Introduction à Flask le micro-framework Python

Django c’est excellent ! Mais dans le vaste monde de Python et du développement web commence à émerger un framework : Flask.

Celui-ci fait partie de la famille des micro-frameworks. Dans le monde PHP on retrouve un projet similaire Silex basé sur des composants Symphony.

Flask quant à lui se repose sur deux librairies : Werkzeug une librairie d’utilitaires WSGI et Jinja2 un moteur de template similaire à celui de Django.

 

Installation

Avant toute chose j’ai pris pour habitude de créer un environnement virtuel pour mes tests et projets Python. Cela évite d’installer dans votre PYTHONPATH principal des choses uniquement nécessaires pour votre projet. Pour cela rien de plus simple.

$ mkdir monprojet
$ cd monprojet
$ virtualenv venv
$ source venv/bin/activate

Nous venons de créer un dossier dans lequel nous avons construit un environnement virtuel. Puis nous avons activé ce dernier.

Installons maintenant Flask dans cet environnement.

$ pip install Flask

Voilà ! Votre environnement est fin prêt pour l’utilisation de Flask.

Hello world !

L’installation désormais terminée c’est parti pour le classique « Hello world ». Créons ensemble un fichier hello.py et éditons-le de la manière suivante.

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Bonjour !"

if __name__ == "__main__":
app.run()

Et c’est tout ! Facile non ?
On lance maintenant le service.

$ python hello.py
* Running on http://localhost:5000/

Il ne vous manque plus qu’à découvrir la page à l’adresse web sus nommée.

Comme vous l’aurez remarqué la vue « hello » est décorée par @app.route(« / »). Ceci indique tout simplement à Flask que cette vue sera exécutée lorsque l’url d’index du site sera appelé par le navigateur.

Un peu plus loin sur les routes

Créons une page supplémentaire. Pour cela déclarons une nouvelle vue.

@app.route("/flask")
def scopart():
return "Flask ! Un framework sympa"

On relance le service et on va sur l’url « http://localhost:5000/flask/ » avec notre navigateur.

Un peu plus dur : une page avec un paramètre !

@app.route("/login/<name>")
def login(name):
return "Bienvenue %s" % name

Encore une fois on relance le service. Et on lance l’url « http://localhost:5000/login/alexis » dans notre navigateur.
Voilà, vous avez passé un paramètre dans votre vue.
Pour aller un peu plus loin sur le système de routage de Flask, je vous conseille la lecture de la documentation à ce sujet.

De la joie avec les templates

Le système de template de Flask est très similaire à celui de Django. Si vous connaissez ce dernier vous ne serez pas du tout dépaysé.
On commence par créer un dossier « templates » dans notre projet. C’est ici que seront stockés l’ensemble de nos templates.

$ mkdir templates

On créé alors un template « hello.html » comme suit :

<!doctype html>
<html>
<head>
<title>{{title}}</title>
</head>
<body>
{% if name %}
<h1>Bonjour {{name}}!</h1>
{% else %}
<h1>Bonjour tout le monde !</h1>
{% endif %}
</body>
</html>

Puis la vue qui se chargera de faire le rendu.

from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
title = "Ma page Hello"
return render_template('hello.html', title=title, name=name)

Pour en savoir plus sur les templates je vous conseille la documentation de jinja.

Pour conclure

C’est ainsi que s’achève cette petite introduction sur Flask. Il faut savoir que de nombreuses extensions existent autour du projet. N’hésitez pas à jeter un coup d’œil à la liste présente sur le site officiel.
Enfin, pour aller plus loin dans la découverte de ce framework, je vous suggère la lecture du tutoriel présent sur ce même site.