Spring is hate...

Django un point zéro

L'ensemble de la Djangophonie a fait écho de la sortie, le 3 septembre dernier, de la version 1.0 du framework web Django.

Pour ma part, concernant une application développée dans le cadre professionnel, j'ai eu l'occasion de migrer d'un 0.96 à un 1.0. En suivant la documentation qui est d'une absolue perfection, on obtient en quelques minutes une version améliorée d'un modèle simple, pour lequel les tests passent et le fonctionnement général du site est identique. S'il fallait noter un framework sur la qualité de sa documentation, Django obtiendrait sans doute un 10/10.

La partie qui a le plus changé est sans doute le mécanisme de l'API de la base de données, ainsi que la branche "newforms-admin" qui refond totalement la manière de générer l'interface de gestion automatique. La création d'un fichier "admin.py" est d'ailleurs extrêmement facilité par ce snippet qui crée le fichier en scannant le fichier "models.py".

Pour ma part, je regrette quand même la disparition des validateurs, qui permettaient d'obtenir un début de contrôle de données très simplement. Au prix de quelques contorsions, c'est encore possible, mais je préférais définir simplement en deux lignes un validateur personnalisé (genre "un nombre entier qui doit se trouver entre 0 et 100 pour un pourcentage"). Less code is more.

En revanche, la partie "test" est absolument bluffante. Non seulement on peut facilement tester les modèles et leurs méthodes, c'est à dire le fonctionnement "sous le capot" de ton application, mais on peut également tester les vues, et mêmes les vues nécessitant une authentification, pour s'assurer que les pages renvoyées sont correctes. Habituellement, cette partie donnait lieu à des tests manuels (genre, pour une boutique, je me connecte, je crée un panier ou encore je remplis un formulaire d'inscription avec des données bidon, ou invalides, ou correctes...). Là, tout peut être résumé à des tests unitaires complets, lancés aussi régulièrement que possibles.

Franchement, cela ouvre des milliers de possibilités, dont celle de coder un site web sans jamais lancer le moindre navigateur. Si, si, on peut.

La migration de JHLP en Django 1.0 me chatouille ; il faudra que je réfléchisse à la question... Mais à mon avis, si je devais commencer une appli en Django ou migrer une application simple en 1.0, je foncerais sans hésiter.

Pour information, chez mon hébergeur Alwaysdata, Django 1.0 est déjà disponible. Qui parlait de réactivité, déjà ?

6 Sept. 2008 - 00:20, par NiCoS

Argh, je viens de passer MvMo en 1.0 et je connaissais pas ce snippet.

Argh :-/

Me reste encore le tuning à faire et profiter des nouveautés de newforms-admin pour rendre MvMo un tantinet plus fonctionnel...

7 Sept. 2008 - 12:24, par tenshu

Ca donne vraiment envie d'essayer Django, j'ai bouquiner une grande partie du Definitive Guide to Django.
Et ça semble être que du bonheur.

Je note juste qu'en comparaison de Symfony il est moins facile de modifier le modèle en cours de route.
Et que le bouquin ne fait pas mention d'une façon de synchroniser le modèle depuis une base existante (ce que nous faisons avec Symfony).
De même l'I18n ne semble pas possible depuis une base de données dans Django.

Mais j'imagine que chaque framework à ses propres forces et faiblesses.

8 Sept. 2008 - 11:47, par No'

modifier un modèle en cours de route est un problème très très très complexe. Beaucoup plus qu'il ne semble. De nombreuses tentatives ont lancé quelques pistes, mais il semble qu'aucune n'ait vraiment couvert tous les besoins pour le moment... L'un des derniers en date est dmigrations. Pas encore eu le temps de tester.

En revanche, depuis l'ajout de la possibilité de faire hériter des modèles (héritage de classes), on peut développer très rapidement un module permettant la traduction de contenus. ça pourrait faire l'objet d'un tutoriel simple, tiens...

17 Sept. 2008 - 10:37, par NiCoS

Je suis en train de tester alwaysdata. Cela a l'air pas mal sauf qu'en fait ils sont hébergés chez OVH/Dedibox. Je me méfie de ces schémas en cascade, surtout qu'ils ont pas d'accès physique au machine. En plus la politique d'OVH de fermeture immédiare d'un serveur qui aurait des activités illégales ne vont pas en me rassurant dans un contexte de mutualisé...

Suis plus tout à fait sur de vouloir quitter mon kimsufi à leur profit du coup...


Toutes les balises HTML seront supprimées.
Tu peux ajouter des liens comme suit :
J'ajoute [a http://exemple.com "un joli lien"]
Tu peux aussi mettre *en gras* ou {en italique}.