Quel framework web Python choisir ?
24 mars 2009 01:08:11
Difficile choix que celui d'un framework en Python, néanmoins il faut bien faire un choix. On peut tenter de dégager trois familles parmis l'offre disponible, en mettant volontairement de coté Zope qui semble être un cas à part:
- les minimalistes
- les modulaires
- les "tout-intégrés"
Je ne retiendrai aucun framework minimaliste (web.py...). Pour ce genre de besoin, une petite appli vite faite, autant rester sur PHP avec Green ou Nicedog par exemple.
Pour ce qui est des modulaires, le choix est important: Turbo Gears, Pylons parmis d'autres. Ils apparaissent un peu comme la somme de plusieurs parties indépendantes (un ORM, un controleur, un moteur de template, un ORM, un controleur, un moteur de template...). Pour Pylons en particulier, le site présente le framework comme compatible avec plusieurs moteurs de template et plusieurs couches modèle. On peut donc composer son framework en fonction de ses goûts ou de ses besoins... mais là encore, ce n'est pas vraiment ce que je cherche ! Venant de PHP en général et du Zend Framework en particulier, je suis plutôt, pour changer, à la recherche d'autre chose qu'un framework "use at will".
C'est là que je m'arrête sur la famille des frameworks que j'appelerai "RoR-like", les frameworks mettant l'accent sur la cohérence, la facilité d'utilisation, la rapidité de développement. On pourra objecter que ces frameworks atteignent leur but par un couplage fort de leurs composants et que c'est dommageable à leur flexibilité... qu'importe, ce n'est pas le but recherché ici. Dans cette famille j'ai retenu deux projets:
J'ai pu évaluer Django et apprécier sa communauté. Une bonne part de la réputation de Django vient de son interface d'administration générée quasi automatiquement depuis les modèles. Si cette admin est impressionnante d'efficacité dans le cadre d'applications de gestion de contenu avec des utlisateurs de confiance, il ne faut pas non plus qu'elle masque les autres qualités ou les défaut de Django.
Dernièrement je me suis plutôt penché sur Web2py qui présente certaines caractéristiques intéressantes et différentes de Django:
- Utilisation d'une couche d'accès aux bases de données plutôt qu'une couche de persistance: là où d'habitude on manipule des objets auxquels on ajout éventuellement de la logique métier, avec Web2py on manipule uniquement des tables et des enregistrements. En outre, les migrations de schéma sont gérées automatiquement, contrairement à Django.
- Utilisation de Python comme langage de template: comme avec les projets PHP, j'ai toujours trouvé un peu pénible et rarement justifié de devoir utiliser un langage différent pour les gabarits d'un site.
- L'utilisation de la ligne de commande est facultative, tout peut être fait dans le navigateur, y compris l'édition du code. Cette caractéristique en fait un bon candidat pour un framework à vocation pédagogique, ce pour quoi il a d'ailleurs été créé à l'origine.
- Gère les exceptions sous forme de tickets. Je trouve l'idée tellement bonne que je l'ai implémentée sur des projets PHP.
- Là où Django force le développeur à définir toutes les routes, Web2py fonctionne par défaut avec des routes de type /application/controleur/action. Evidemment on peut toujours personnaliser ses urls ensuite.
- Les packages du framework n'ont pas à être importés manuellement. Oui, cela va à l'encontre du Zen of Python... mais taper toute une série d'imports avant de commencer à faire quelque chose n'a rien d'intéressant ni d'amusant, autant le laisser à une machine :-)
- L'interface d'administration permet d'ajouter et/ou de packager des applications complètes
- Sans doute pleins d'autres choses que j'ai oublié...
Vous l'aurez compris, je suis pour l'instant charmé par Web2py. A coté de ZF c'est un vrai jeu d'enfant, même si je ne lui destine pas forcément le même type de projet. Evidemment il reste à éprouver tout ça et à confirmer dans le temps cette bonne impression.
Comments:
shootaenz (3 juil. 2009 15:36:11)
desfrenes
Samuel Martin
Web2Py semble très intéressant surtout au niveau des migrations. Ne pas avoir de modification automatique ou de commande pour balancer les modifications du models vers la base de données est une vrai plaie sur Django, il existe effectivement bien "South" mais nous n'avons pas le coté intuitif.
desfrenes
il faudrait revoir ton opinion sur ZF, les dernières versions fournissent Zend_Tool et les outils en ligne de commande qui permette le démarrage relativement rapide d'un projet, de la génération de code, etc... même si ça reste pas aussi full-stack que Django.
tiffany and co