Nouveauté de Django 1.6 : ENFINNNNNNNNNNNNN ! 11


Django 1.6 est sur les rails, et il y a des changements que j’attends depuis 3 éternités dedans.

Support officiel de Python 3

Là, on pourra dire que Python 3 est crédible. Là, on peut commencer à faire du Python 3.

Après il restera toujours Python 2 par défaut sur certains OS, donc il y a encore du chemin. Je vous rappelle qu’Ubuntu avait prévu de migrer il y a 2 ans. LOL.

Template de projet simplifié

Enfin, un nouveau projet commence avec l’admin activée par défaut.

Enfin, la base de données est configurée par défaut pour utiliser SQLite. Ca qui signifie que Django marche VRAIMENT out of the box. Un débutant à juste à commencer à coder.

C’était le dernier gros bloc à mon sens pour permettre à quelqu’un de se lancer sans avoir à chercher à comprendre comment tout marche.

Des réglages de DB moins cons

Les transactions en Django, c’était cryptique. Maintenant c’est tout simplement de l’autocommit par défaut (configurable). Et si on veut avoir plein de queries dans une seule transaction :

    with transaction.atomic():
        query1()
        query2()

Putain, enfin !

Et en prime, on peut avoir une connexion persistante à la base de données et éviter des setups à base de psycopg2_pool. Je vais jouir.

Au passage, si vous lisez la doc sur les DB, c’est plus ou moins un appel à migrer de MySQL à PostGres si vous le pouvez. Maintenant il n’y a plus que des avantages.

Autre goodies : save() fait maintenant une query au lieu de deux dans le cas d’un update. Alléluia mes frères !

Pour finir, on a un field pour stocker des données binaires brut en DB. Et la valeur de BooleanField est None (NULL en DB) par défaut, et plus False. Pas trop tôt…

Quelques bonbons

Ceux qui écrivent des backend d’authentification seront heureux d’apprendre que l’on pourra lever PermissionDenied à tout instant pour se simplifier la vie.

Les amateurs de latest() n’auront plus à faire un sort() avant pour obtenir le premier élément, il suffit de faire earliest(). Et on n’aura plus à faire un try/except sur un filter()[0] pour obtenir le premier élément, first() permet de le faire (et last() pour le dernier) et retournera None si ça foire..

Certains fields de formulaire passent en HTLM5, par exemple EmailField output type="email". Ah, les labels de forms contiennent maintenant une option suffix, qui a pour défaut “:“.

Les ModelForm peuvent écraser le message d’erreur d’un champ, sans avoir à réécrire le champ. Des dizaines de lignes qui vont sauter, yes ! De plus il n’ont plus la grosse faille de sécurité qui supposait que tous les champs du modèle (y compris l’ID) étaient exposés si on ne précisait rien. Si vous voulez ce comportement, il faudra explicitement mettre fields = "__all__".

11 thoughts on “Nouveauté de Django 1.6 : ENFINNNNNNNNNNNNN !

  • lanoj

    WTF, en regardant trop vite la première ligne j’ai cru voir Django passe à Rails (RoR). Faut vraiment que j’arrête le café.

    Sinon c’est chouette je vais enfin pouvoir déballer le livre sur Python 3 que mon pote(admin linux, fan de python) m’a(moi développeur PéHachePé) offer à Noël(2011).

  • anddy

    Faut il s’attendre à une baisse des performances de django avec le passage à la v3 ? Python 3 est plus lent que la 2.7 non ?

  • Sam Post author

    Le code Python n’est jamais le goulot d’étranglement dans un framework Web. Ce sont toujours les IO : accès disque, requêtes DB, requêtes Web, etc. Donc personne n’a fait de benchmark, puisque tout le monde s’en fout.

  • foxmask

    “de source officielle proche du dossier” (comme i diz à la TV), elle est pessimiste quant au planning pour cette release. Donc je dirai plutot que les rails sont en construction avant que le train 1.6 n’arrive en gare ;)

  • kontre

    On écrit “Alléluia” , ‘spèce de païen !

    Concernant les perfos, la doc officielle indique que c’est principalement dû au fait qu’il n’y a plus de cas spécial pour les petits entiers (32 bits je suppose), donc certains calculs sont un chouilla plus lents (http://docs.python.org/release/3.0.1/whatsnew/3.0.html#performance). Moi je n’ai rien noté de spécial, mais mes calculs de bourrins se font avec numpy et pas les types python.

    Edit : ah et on écrit “prophétie”, aussi. Tssss…

  • Sam Post author

    C’est pour ça que tu as les droits d’édition mon petit contre, pour nous donner une chance d’arriver au moins au purgatoire.

  • Xavier Combelle

    La performance de python 3 c’est bien amélioré entre la version 3.0 et la version 3.3. Si je me trompe pas elle est en règle générale meilleure maintenant que la 2.7. bien sur pour un cas d’utilisation rien ne vaut un benchmark.

  • Eric

    Il y a le SDL2 qui est arrivé sur Python cet été (http://linuxfr.org/news/la-bibliotheque-sdl-est-sortie-en-version-2-0 ).

    Pas mal de nouveauté et aussi de version de python pas tout à fait bien supportée par cette lib mais ça avance dans le bon sens.

    L’inter opérabilité étant une condition sine qua non au(x) développement de ce langage, j’aimerais savoir si Sam & Max seraient prêt à ouvrir un espace extérieur à Django, ainsi que WX, Tk ou ce genre de truc ?

    Je suis prêt à faire un tuto tout simple sur ces nouveautés mais je ne compte pas le faire tout seul, un StackOverFlow version Max et Sam est une superbe idée, je compte sur vous messieurs/dames, jeunes demoiselles et autre introvertis ou pas à franchir ce pas qu’est devant l’éternel envie de (nân, l’éternel envie de soif et de savoir) les possibilités offertes (demain je me présente aux élections des cantonniers avec cela).

    Bref, les mails ne servent à rien, les SOF quand on a le temps mais aussi quand c’est pas exprimés par un Hollandais répondant à un Japonais parlant d’un Espagnol expatrié du Maroc …

    Er(‘ic ,)

  • Sam Post author

    Hello Eric,

    Si tu veux faire un article sur quoi que ce soit en Python, on le publiera avec plaisir.

    Après pour le SO, c’est toujours une bonne idée, et on a toujours pas le temps :-)

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.