Date de sortie : 28 mars 2025
Documentation officielle : https://www.django-rest-framework.org/community/release-notes/#316x-series
DRF 3.16 est une mise à jour solide qui accompagne le cycle Django LTS avec le support de Django 5.2, annoncé pour avril 2025. Python 3.13 est officiellement pris en charge, et plusieurs points de friction liés aux évolutions récentes de Django sont adressés. Une version qu’on attendait pour pouvoir migrer sereinement vers le stack 2025.
Les nouveautés principales
Support de Django 5.1 et 5.2 LTS
DRF 3.16 supporte Django 4.2 (LTS), 5.0, 5.1 et 5.2 (LTS). Django 4.2 reste la version minimale requise — les projets sur Django 3.x ou antérieur doivent migrer avant de pouvoir adopter cette version de DRF.
Python 3.13 et minimum relevé à 3.9
Python 3.13 est pleinement supporté. À l’autre bout du spectre, Python 3.8 (en fin de vie depuis octobre 2024) est retiré de la matrice de compatibilité. Python 3.9 devient le minimum requis.
# Vérifier sa version Python avant de migrer python --version # Python 3.9 minimum requis
Compatibilité avec LoginRequiredMiddleware
Django 5.1 a introduit un nouveau middleware LoginRequiredMiddleware qui applique la contrainte d’authentification à toutes les vues par défaut. DRF 3.16 gère correctement cette interaction : les vues DRF respectent le comportement attendu sans nécessiter de configuration supplémentaire, et AllowAny continue de fonctionner comme prévu pour les endpoints publics.
# settings.py — avec LoginRequiredMiddleware activé
MIDDLEWARE = [
...
"django.contrib.auth.middleware.LoginRequiredMiddleware",
...
]
# DRF respecte AllowAny même avec ce middleware actif
class PublicEndpointView(APIView):
permission_classes = [AllowAny]
def get(self, request):
return Response({"status": "ok"})
Meilleur support de UniqueConstraint
La gestion des UniqueConstraint de Django dans les serializers est améliorée, avec un support étendu pour les cas complexes : champs nullables dans une contrainte d’unicité et contraintes conditionnelles (avec condition=Q(...)).
class Meta:
model = MyModel
constraints = [
# DRF 3.16 gère correctement ce type de contrainte
models.UniqueConstraint(
fields=["user", "slug"],
condition=Q(is_active=True),
name="unique_active_user_slug",
)
]
Améliorations internes
Sous le capot, cette version embarque des progrès sur plusieurs fronts : annotations de types étendues pour améliorer l’expérience avec les éditeurs et mypy, couverture de tests renforcée et corrections de sécurité mineures. Rien de spectaculaire côté API publique, mais des bases plus saines pour les versions suivantes.
É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
DRF 3.16 est la version de référence pour un projet Django en 2025. Elle couvre les deux LTS actives (Django 4.2 et 5.2), supporte Python jusqu’à 3.13 et gère proprement les nouveautés de Django 5.1 comme LoginRequiredMiddleware. Si tu prépares une migration vers Django 5.2 LTS, c’est la version à cibler.