Sortie de Django 1.0, une année de nouveautés

Tags associés : , , , posté le 2 september 2008


Logo associé au billet intitulé Sortie de Django 1.0, une année de nouveautés

J'étais assez sceptique lors de l'annonce de la roadmap avant l'été mais il faut bien avouer que ça n'a pas chômé pendant ces vacances et que les développeurs sont arrivés à bout des fonctionnalités annoncées. Chapeau bas. Je ne vais pas faire un inventaire exhaustif des nouveautés (je vous laisse consulter la page dédiée) mais plutôt une liste des ajouts vraiment intéressants au quotidien au cours de cette dernière année.

Support complet de l'Unicode

Mergée l'été dernier, le nom de cette branche est assez explicite. Terminés les problèmes de charset/encoding lorsqu'on a des données propres, sinon iconv est votre ami.

Commandes personnalisées

La refactorisation des commandes internes de Django permet depuis un an d'ajouter très facilement des commandes personnalisées à votre projet. Vous pouvez par exemple voir ce que ça donne sur le script qui récupère les flux affichés dans la sidebar de ce site.

Échappement des variables dans les templates

Changement de la politique de sécurité en novembre dernier avec les variables échappées par défaut. Selon les cas, ça peut être pénible pour les mises à jour mais c'était à mon avis utile pour permettre aux débutants de ne pas faire trop d'erreurs à ce niveau. Il est toujours possible de contourner cette restriction via le filtre |safe ou le tag autoescape (great power, great responsabilities, tout ça).

Refactorisation des querysets

Fin avril, un énorme boulot est effectué en interne afin de corriger pas mal de bugs récalcitrants, ça permet (entre autres) d'ordonner plus facilement les querysets, de spécifier les champs couverts par un select_related, d'optimiser la façon de filtrer les résultats, de mettre à jour plusieurs instances d'un coup et surtout, le retour de l'héritage au niveau des modèles !

Modifications dans l'upload de fichiers

Début juillet, ça commence à s'accélérer, il est maintenant possible de lire les fichiers uploadés partie par partie. Ça n'a l'air de rien mais selon les types de fichiers sur lesquels vous travaillez ça peut vraiment faire la différence.

Nouvelle administration utilisant les newforms

C'est LA fonctionnalité qui donne à mon avis à Django une longueur d'avance sur les autres frameworks. Ajoutée mi-juillet, cette branche permet de générer une interface d'administration qui tient compte des droits utilisateurs, qui est vraiment flexible et customisable. L'interface qui était réservée aux personnes de confiance (administrateur) peut maintenant être utilisée pour développer un site complet. Le problème c'est qu'à partir de cette date là, avec les vacances et les commits qui s'accélèrent il devient plus prudent d'attendre la 1.0 et cette fonctionnalité n'a pas eu la promotion qu'elle méritait à mon avis. Cela dit il est temps de tester sa puissance maintenant, je joue avec depuis quelques jours et c'est vraiment du bonheur.

Ajout du support géographique

GeoDjango est enfin ajouté dans les contrib, très beau projet avec énormément de fonctionnalités indispensables lorsque vous commencez à vouloir savoir qui habite près de qui, quelle est la distance parcourue, etc.

Refactorisation des stockages de fichiers

Bon celui là c'est un peu mon chouchou car je l'ai testé à plusieurs reprises pour faire des retours à Marty Alchin et ça m'a mené à partager certains storages utiles pour Django. Il permet par exemple de stocker ses fichiers en local pour du développement et sur S3 pour de la production ou n'importe quelle combinaison possible et imaginable.

Nouveau système de commentaires

Pour finir, ce qui était attendu depuis... toujours, un GSoC est arrivé à terme ! Les commentaires ont été entièrement réécrits, j'utilise une version alpha de cette implémentation et je ne sais pas si je mettrais à jour, peut-être à l'occasion mais elle a l'avantage de ne pas être standard et pour lutter contre le spam on ne fait pas mieux ;-).

Enfin, il y a eu pas mal de ménage de fait sur d'anciennes parties de code (suppression des oldforms/validators entre autres), ce qui le rend plus facilement maintenable et une nouvelle documentation propulsée par Sphinx (l'outil qui mériterait un petit système de tickets pour être tout à fait parfait). Que du bon. De mon côté, on peut pas dire que j'ai vraiment avancé sur mes tickets, j'ai pas mal discuté de l'intérêt de l'utilisation du tag url dans blocktrans et au final la solution est venue presque par hasard ! J'ai pas eu le temps de m'occuper de tout ce qui était relatif à la séparation des tests mais j'ai mis à jour les traductions (ce qui représentait un sacré boulot, heureusement que j'ai eu de l'aide de la team fr).

Une année riche en nouveautés qui montre le dynamisme du framework, la 1.0 n'était qu'une étape nécessaire permettant de partir d'une base saine. Il y a encore 2/3 choses qui méritent d'être remises à plat pour la 1.1 mais sinon c'est clairement positif. Avec de telles fondations, il devient de plus en plus facile de développer son projet parfait, en tenant les délais ;-). Il ne manque plus que la sortie de Starcraft 2 pour faire le grand chelem...

PS : ça sort dans quelques heures, un peu de patience, je le publie maintenant suite à une petite erreur de ma part. En attendant qu'est-ce qui vous pousse/retient d'utiliser cette version ?

[edit du soir] : bon finalement ça commence par une faille de sécurité qui sera suivie d'une RC1.

[edit du 4 septembre, 1h47] : sortie de la version 1.0. Enfin.

La page officielle de migration est un bon début si vous n'êtes pas à jour.

15 Commentaires

J'attendais cette version pour me mettre à Python et Django. Par où commencer pour apprendre Django 1.0 (le DjangoBook a besoin d'être mis à jour ?) ?

1 | Thomas, le 2 September 2008 à 11h

@Thomas : je pense que la nouvelle doc est la seule à être à jour pour l'instant et c'est suffisant pour commencer. Le tutoriel est un bon début : http://docs.djangoproject.com/en/dev/intro/tutorial01/#intro-tutorial01

2 | David, biologeek, le 2 September 2008 à 11h

@thomas : je crois que oui, le djangobook a besoin d'être mis à jour. Pour commencer, lire la documentation (de préférence la doc de dev' lié par David ci-dessus)

Personnelement j'attendais la release (et le fin de mon stage et donc de mon cursus ingénieur) pour mettre à jour mon développement django actuel (un site perso quoi). Cette version stable devrait amener la reconnaissance que mérite ce framework.

J'étais aussi un peu sceptique sur la roadmap au début, mais vu le travail qu'ils ont fournis !

3 | vincent, le 2 September 2008 à 12h

Merci pour cette recapitulation des nouveautes et merci pour ta contribution a toi aussi! ;)
Je predis un enorme succes pour Django, qui devrait supplanter la plupart des frameworks web durant ces prochains mois.

4 | Julien Phalip, le 2 September 2008 à 13h

@vincent : tu t'es fait doublé par Gilles je crois ;-)

@Julien Phalip : merci pour tes relectures, n'hésite pas à passer sur #django-fr un de ces 4.

5 | David, biologeek, le 2 September 2008 à 13h

Même si certains éléments ne sont plus d'actualité, le django book a à mon avis l'intérêt de poser les principes du framework et je dirais même jusqu'à une méthode de développement avec Django. Pour le détail, il faut en effet se référer à la doc officielle.

Si la version 1.0 doit sortir ce jour, je suis étonné qu'elle ne passe pas par le stade des RC, pourtant annoncées. Je n'ai pas suivi la liste django-dev depuis quelques temps, donc ceci peut peut être expliqué cela...

6 | NiCoS, le 2 September 2008 à 14h

> Si la version 1.0 doit sortir ce jour, je suis étonné qu'elle ne passe pas par le stade des RC, pourtant annoncées.

En fait la Beta2 a plus ou moins le statut de RC. Il y avait du retard donc ils ont mergé les deux si je me rappelle bien.

7 | David, biologeek, le 2 September 2008 à 14h

Info ou intox ? ;-) en tout cas, pas d'infos sur http://djangoproject.com sur la sortie de la version 1.0 définitive.

Merci en tout cas pour ce résumé des nouvelles fonctionnalités de Django 1.0 (je pense que l'apparition de l'héritage des modèles [1] est également une nouveauté à souligner) et pour ton travail sur le projet.

[1] http://www.djangoproject.com/documentation/model-api/#model-inheritance

8 | er:k, le 2 September 2008 à 17h

Comme je le précise en PS, il y avait un problème dans mon code qui a publié le billet alors qu'il était à l'état de brouillon sur le planet de django, du coup j'ai préféré publier plutôt que de faire tomber sur une 404 toute la journée alors que c'est pas officiellement sorti.

Je mettrais à jour le billet lorsque ça sera effectivement le cas (probablement cette nuit pour nous).

9 | David, biologeek, le 2 September 2008 à 17h

J'essaie d'apprendre ce framework qui a l'air vraiment bien conçu, mais ce n'est pas évident de s'y retrouver entre les tutos pour la 0.96 et la pratique dans la 1.0

Existe-t-il (sinon ce serait un bon plan) un document de référence des modifications de syntaxe (ex:maxlength => max_length). Pour les MAJ cela me paraît intéressant.

Bravo pour le suivi de la feuille de route... je n'y croyais pas trop non plus.

10 | Efel, le 3 September 2008 à 10h

Au temps pour moi, je viens de trouver...

http://docs.djangoproject.com/en/dev/releases/1.0-porting-guide/

11 | Efel, le 3 September 2008 à 10h

Ah, ils ne m'ont pas fait mentir, ils ont sorti une RC ;-)

http://groups.google.com/group/django-developers/t/db75926db673c071

En même temps d'ailleurs qu'une annonce de sécurité pour les versions antérieures (0.96, 0.95 et 0.91)

http://groups.google.com/group/django-developers/t/7e5f22acb1dc2d87

Sinon David, pour toi c'est quoi les 2/3 choses qui doivent être remis à plat pour la 1.1 ??

12 | NiCoS, le 3 September 2008 à 21h

@NiCoS : agrégation, optimisations (cf #17 entre autres), gestion des applications, multithreading (cf http://code.djangoproject.com/wiki/DjangoSpecifications/Core/Threading), définition des URL et sûrement un paquet d'autres trucs que j'oublie.

13 | David, biologeek, le 4 September 2008 à 01h

j'ai besoin de plus d'info sur "Nouvelles administrations utilisant les newforms" je dois faire evoluer l'interface d'administration d'un site que j'ai réalisé mais je ne sais pas trop comment m'y prendre et en plus dans mon model "Personne" je dois uploader une photo l'interface admin le fait bien mais n'affiche pas la photo lorsque je retourne a la page "liste" comment resoudre ce probleme Merci

14 | cambuntu, le 8 September 2008 à 18h

Bonjour,

Je suis de l'autre coté de la barrière et je m'occupe d'un département ebusiness dans une grosse entreprise. Nous sommes sur le point de choisir un partenaire pour nos dévelopement web et sommes très intéressés par Django.
Cependant, j'ai un mal fou à trouver des agences/companies/sociétés qui développent en Django.

Auriez-vous des références (pas des clients mais des "providers") qui utilisent Django comme framework pour leur clients ?
N'importe où dans le monde (avec une préférence pour l'Europe centrale)

D'avance merci !

15 | JP henskens, le 25 September 2008 à 17h

Ajouter un commentaire


Billets contextuels

★ Conférences Django pour PyCon fr

Logo associé au billet intitulé Conférences Django pour PyCon fr

J'ai eu le privilège de présenter Django lors des journées organisées par l'afpy. C'était vraiment un weekend exceptionnel, une organisation exemplaire, des conférences de qualité, des discussions de geek, que du bon. Je me suis enfin décidé ...

Google App Engine : avantages et inconvénients

Logo associé au billet intitulé Google App Engine : avantages et inconvénients

Vous n'avez pas pu passer à côté de l'information aujourd'hui, Google a lancé son nuage en orbite. Réactions à chaud froid (j'ai pas encore d'invitation) sur le bon et le moins bon. Vous avez eu ...

★ Astuces et bonnes pratiques Django

Logo associé au billet intitulé Astuces et bonnes pratiques Django

Développant avec Django depuis maintenant près de deux ans (ça rajeunit pas tout ça...), je suis encore surpris de découvrir de nouvelles possibilités de temps en temps. Dans mon combat pour les bonnes pratiques, je pense qu'il y a ...


© 2004-2008 David Larlet - Licence (presque) libre - Site enfin propulsé par Django et hébergé par Typhon.