Date de sortie : 4 août 2020
Documentation officielle : Django 3.1 release notes
L’async débarque vraiment dans Django. Après le support ASGI en 3.0, cette version apporte les vues async et JSONField pour tous les backends. Deux features qu’on attendait depuis longtemps.
Les nouveautés principales
Vues asynchrones — c’est parti !
Les vues peuvent maintenant être async :
import asyncio
from django.http import HttpResponse
async def my_view(request):
await asyncio.sleep(1)
return HttpResponse("Hello, async world!")
Les middlewares async sont aussi supportés.
JSONField pour tous les backends — enfin !
Plus besoin de PostgreSQL pour stocker du JSON. JSONField fonctionne maintenant avec SQLite, MySQL et MariaDB :
from django.db import models
class Profile(models.Model):
data = models.JSONField(default=dict)
Avec les lookups JSON :
Profile.objects.filter(data__settings__theme='dark') Profile.objects.filter(data__tags__contains=['python'])
Sidebar dans l’admin
L’admin affiche maintenant une barre latérale de navigation sur les grands écrans pour accéder rapidement aux modèles.
on_delete=RESTRICT
Nouvelle option pour empêcher la suppression si des objets liés existent, sans cascade :
class Comment(models.Model):
author = models.ForeignKey(
User,
on_delete=models.RESTRICT # Empêche la suppression de l'user
)
PositiveBigIntegerField
Pour les grands entiers positifs (jusqu’à 9223372036854775807).
Autres améliorations
- Support de pathlib.Path dans les settings
- HttpRequest.accepts() pour la négociation de contenu
- SearchHeadline pour PostgreSQL (highlight des résultats)
- Itérations PBKDF2 augmentées (180 000 → 216 000)
Échanger avec un expert Django
Nous revenons vers vous sous 24h.
Chez Makersquad, nous accompagnons nos clients dans la conception d’application modernes et performantes avec Django .Que vous souhaitiez lancer une nouvelle API, moderniser une architecture existante ou améliorer les performances de vos services backend, notre équipe met son expertise à votre disposition pour concevoir des solutions fiables, rapides et parfaitement adaptées à vos enjeux métier.
À retenir
Django 3.1 concrétise la promesse async de 3.0. Certes, l’ORM reste synchrone (ça viendra), mais les vues async ouvrent déjà des possibilités intéressantes pour les I/O concurrents. Et JSONField universel, c’est juste du bonheur.