Présentation du micro-framework Flask

logo framework Flask

Ce billet constitue une présentation du framework, Flask. Il permet de créer rapidement et très simplement des applications Web (blog, forum, etc.).

Par la suite d'autres billets seront publiés pour présenter d'une manière plus approfondi quelques unes de ses caractéristiques.

Introduction

Flask s'inspire d'un projet écrit en Ruby, Sinatra. Contrairement à ce dernier, il est entièrement développé en Python.

Il repose sur la bibliothèque Werkzeug (ensemble « d'utilisatires » WSGI en autre), et utilise le système de template Jinja 2 [1].

Il possède de nombreux atouts :

  • Une excellente documentation, tout est expliqué
  • La possibilité de l'étendre (en ajoutant des extensions)
  • Un système de vues assez clair (facilement compréhensible)

Installation

Sous openSUSE

Il faut tout d'abord installer le dépôt devel:languages:python (Cf. Upgrade openSUSE, la gestion des dépôts). Pensez à bien vérifier que Werkzeug et Jinja2 soient installés.

Sous FreeBSD

Je suis le mainteneur, donc ce port est mis à jour régulièrement.

À partir des ports (par compilation)

Il faut mettre à jour l'arbre des ports, si vous avez correctement configuré votre fichier /etc/make.conf, il suffit de lancer cette commande :

root@bornem:~ # cd /usr/ports/ ; make update

On va installer le paquet, en le compilant (c'est assez rapide, car il y a très peu de dépendances) :

root@bornem:/usr/ports # cd www/py-flask && make install clean
À partir d'un paquet pré-compilé
root@bornem:~ # pkg_add -r py27-Flask

Hello World !!!

Notre premier exemple se fera à partir du shell Python.

olivier@bornem:~ $ python
Python 2.7.2 (default, Aug 19 2011, 20:41:43) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> from flask import Flask
>>> app = Flask(__name__)
>>> 
>>> @app.route("/")
... def index():
...  return "Hello World!"
... 
>>> with app.test_request_context():
...  print index()
... 
Hello World!
>>> 

Voici une explication concernant la déclaration de notre première variable app :

About the First Parameter

The idea of the first parameter is to give Flask an idea what belongs to your application. This name is used to find resources on the file system, can be used by extensions to improve debugging information and a lot more.

So it's important what you provide there. If you are using a single module, `name` is always the correct value. If you however are using a package, it's usually recommended to hardcode the name of your package there.

On peut bien sûr passer des paramètres à notre fonction :

>>> @app.route("/hello/<username>")
... def hello_user(username=""):
...  return "Hello %s" % username
...  
>>> with app.test_request_context():
...  print hello_user()
...  print hello_user("Olivier")
... 
Hello 
Hello Olivier
>>> 

Voilà j'espère que les prochains billets vous intéresseront.

Note

[1] La syntaxe est proche de celle utilisée dans Django.