Dans ma quête de la connaissance de tous les frameworks webs, je débute cette deuxième journée par une présentation sur Django. Il s’agit d’un framework Web open-source sous licence BSD écrit en Python, venu au départ d’un projet codé par World Online, la version électronique du journal Lawrence au Kansas.
Ce matin c’est Benoît Domingue de l’agence ReptileTech qui nous présente Django. Le framework est utilisé aujourd’hui par des sites comme Pinterest, DisqUs, Instagram, la Nasa ou le Washington Post.
Django a plusieurs caractéristiques avec en particulier :
– un moteur d’ORM simple et puissant afin d’éviter d’écrire du code SQL
– un système d’administration, je dirai plutôt un moteur de CRUD « à la play1/Grails » très puissant et bien abouti. Pratique pour gérer son domaine de données
– un système d’abstraction des URLs afin de séparer le routage d’une part, de ce qui est appel des fonctions d’autre part.
– un moteur de templating
– un système de cache basé sur memcached
– support I18N
Django est un framework intéressant et certainement incontournable pour les développeurs Python. L’expressivité et la ressemblance avec Rails, tout fait qu’il est facile d’en comprendre le fonctionnement.
Côté base de données, on retrouve une idée reprise avec evolution dans Play1. Il y a d’une part un moteur qui permet de mettre à jour la base de données selon son modèle (ce que fait Hibernate) mais aussi un système de version du modèle relationnel, comme avec Evolution.
Déclarer son modèle est à la fois simple et peu verbeux. Un ensemble de fonction permet de booster son modèle et apporte immédiatement un gain de productivité. Les types de données sont exploitées dans le module d’Admin (CRUD). Ainsi une date sera représentée avec un date picker dans l’admini, les emails sont validés, bref un ensemble de fonctions bien fichues.
Voyez l’exemple du Blog en Django (cliquez sur l’image) :
Côté code, je ne suis pas un grand fan de la syntaxe du fichier de déclaration de routes. Cependant sa flexibilité permet de bien séparer la partie URL, de la partie Controller.
Sur la syntaxe des templates, une photo vaut mieux qu’un long discours.
Bon, pas trop convaincu. La syntaxe « à la Razor » de MVC.Net/Play2 est passé par là, et on a envie de pouvoir coder librement, sans devoir utiliser de balises ou de blos délimiteurs.
En conclusion, j’ai bien aimé cette présentation. Le framework est bien documenté, avec des tutoriaux. Django 1.5 propose aussi de nombreux modules complémentaires (email, sécurité, authentification) listés sur la page Django.
Définitivement à découvrir pour les développeurs Python.