Date de sortie : 2 décembre 2019
Documentation officielle : Django 3.0 release notes
Django passe en version majeure 3.0 et entre dans l’ère de l’async. Le support ASGI pose les premières briques d’un Django asynchrone, même si les vues async ne sont pas encore là. Et les enums pour les choices ? Un vrai plaisir.
Les nouveautés principales
Support ASGI — le début de l’aventure async
Django peut maintenant tourner en mode asynchrone via ASGI, en plus de WSGI :
# asgi.py from django.core.asgi import get_asgi_application application = get_asgi_application()
C’est le premier pas vers le support complet de l’async dans Django.
Enums pour les choices — enfin !
Fini les tuples de tuples illisibles ! Place aux enums propres :
from django.db import models
class Status(models.TextChoices):
DRAFT = 'draft', 'Brouillon'
PUBLISHED = 'published', 'Publié'
ARCHIVED = 'archived', 'Archivé'
class Article(models.Model):
status = models.CharField(
max_length=10,
choices=Status.choices,
default=Status.DRAFT
)
Accès propre aux valeurs :
article.status = Status.PUBLISHED
if article.status == Status.DRAFT:
...
Support officiel de MariaDB
MariaDB 10.1+ est maintenant officiellement supporté.
ExclusionConstraint pour PostgreSQL
Contraintes d’exclusion pour éviter les chevauchements :
from django.contrib.postgres.constraints import ExclusionConstraint
from django.contrib.postgres.fields import RangeOperators
class Reservation(models.Model):
room = models.ForeignKey(Room, on_delete=models.CASCADE)
period = models.DateRangeField()
class Meta:
constraints = [
ExclusionConstraint(
name='no_overlapping_reservations',
expressions=[
('room', RangeOperators.EQUAL),
('period', RangeOperators.OVERLAPS),
],
),
]
Autres améliorations
- Filtres directement utilisables dans les QuerySets (sans annotate)
- SmallAutoField pour les petites tables
- Fonctions de hash : MD5, SHA1, SHA256, etc.
É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.0 pose les fondations de l’async, mais la vraie révolution viendra dans les versions suivantes. En attendant, les TextChoices / IntegerChoices sont une amélioration immédiate de la lisibilité de vos modèles. Migrez !