La dernière version majeure du framework, la version 2.0, est sortie en décembre 2017. L'un des plus grands changements apportés était la fin du support de Python 2. Mais Django 2.0 a aussi introduit trois nouveautés majeures. La première est une syntaxe de routage d'URL simplifiée. La nouvelle fonction django.urls.path() offre en effet une syntaxe de routage d'URL plus simple et plus lisible.
Pour illustrer cela, cet exemple des versions précédentes de Django :
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
pourrait être écrit comme suit :
path('articles/<int:year>/', views.year_archive),
La nouvelle syntaxe prend en charge la coercition de type des paramètres d'URL. Dans l'exemple, la vue (views) recevra l'argument year comme nombre entier et non comme une chaîne.
Il faut également noter qu'avec Django 2.0, contrib.admin a été optimisé pour le mobile. L'admin est maintenant responsive et prend en charge tous les principaux appareils mobiles. La troisième fonctionnalité majeure est que la nouvelle expression Window permet d'ajouter une clause OVER aux querysets. Pour le reste, il s'agissait de fonctionnalités mineures.
Django 2.1, publié en août 2018, a apporté comme principale nouveauté une permission view au modèle Meta.default_permissions. Cela permet aux utilisateurs d’avoir un accès en lecture seule aux modèles de l’admin. Elle est créée automatiquement lors de l'exécution de migrate.
Huit mois plus tard, l'équipe Django annonce la version 2.2 du framework Python. Cette version a été désignée comme une version bénéficiant d'un support à long terme (LTS), ce qui signifie que les correctifs de sécurité et de perte de données seront appliqués pendant au moins les trois prochaines années. Elle recevra également des correctifs pour les bogues bloquants, les bogues majeurs dans les fonctionnalités nouvellement introduites et les régressions à partir d'anciennes versions de Django pour les huit prochains mois jusqu'à décembre 2019.
Pour en venir aux nouveautés, celles mises en avant par l'équipe Django sont les suivantes :
- l'ajout de HttpRequest.headers pour permettre un accès simple aux en-têtes d’une requête ;
- l'ajout de contraintes de base de données sur les modèles : les nouvelles classes CheckConstraint et UniqueConstraint permettent d'ajouter des contraintes de base de données personnalisées. Les contraintes sont ajoutées aux modèles à l'aide de l'option Meta.constraints ;
- Compatibilité Watchman pour runserver. Rappelons que Watchman est un outil open source et multiplateforme développé Facebook pour permettre aux développeurs de détecter et enregistrer les modifications de fichiers. runserver (une commande qui démarre un serveur de développement léger sur la machine locale) peut désormais utiliser Watchman pour améliorer les performances de surveillance des modifications sur un grand nombre de fichiers.
Pour le reste des changements, il s'agit de fonctionnalités mineures qui ont été ajoutées tandis que d'autres fonctionnalités sont désormais obsolètes. Vous trouverez plus de détails dans les notes de version.
Rappelons aussi qu'avec la sortie de Django 2.2, Django 2.1 a atteint la fin du support principal. La dernière version de correction de bogues (v2.1.8) vient aussi de sortir. Django 2.1 recevra des correctifs de sécurité et de perte de données jusqu’en décembre 2019. Tous les utilisateurs sont donc encouragés à effectuer la mise à niveau.
Téléchargements
Sources : Annonce officielle de Django 2.2, Notes de version
Et vous ?
Utilisez-vous Django pour développer en Python ? Au quotidien ou de manière occasionnelle ? Au travail ou à la maison ?
Que pensez-vous de ces nouveautés ? Lesquelles appréciez-vous le plus ? Pourquoi ?
Qu'attendez-vous du framework par rapport aux concurrents ?
Voir aussi :
PyCharm 2019.1 est disponible, l'EDI Python vient avec une meilleure intégration de Jupyter Notebook, un keymap pour Sublime Text et bien plus
Python est plus utilisé pour la data science que pour le développement Web, d'après une enquête réalisée par la Python Software Foundation
Quels sont vos frameworks Web Python préférés en 2018 ? Pourquoi ? Partagez vos avis
Python : Flask passe à la version 1.0, le micro-framework de développement web se dote de nouvelles fonctionnalités
Django 2.0 est disponible en version stable, quelles sont les nouveautés dans cette version du framework Web écrit en Python ?