Date de sortie : 13 novembre 2025
Documentation officielle : https://django-ninja.dev
Django Ninja 1.5 arrive avec son lot de mises à jour de compatibilité et quelques changements cassants à anticiper avant de mettre à jour. Python 3.13 et Django 5.2 sont désormais supportés officiellement, Pydantic 2.12 est requis, et le paramètre csrf de NinjaAPI disparaît. Une version à lire attentivement avant d’appliquer.
Les nouveautés principales
Support de Python 3.13 et Django 5.2
La suite de tests tourne maintenant sur Python 3.13 et Django 5.2. Pas de changements d’API liés à ces mises à jour, mais c’est la garantie que le framework reste compatible avec les dernières versions stables de l’écosystème. Si votre projet est déjà sur Python 3.13 ou Django 5.2, vous pouvez mettre à jour Django Ninja en toute confiance.
La version minimale de Python passe de 3.8 à 3.9 dans cette version. Python 3.8 est en fin de vie depuis octobre 2024 — si ce n’est pas encore fait, c’est le moment de migrer.
Compatibilité Pydantic 2.12
Pydantic 2.12 apporte des optimisations de performances et des correctifs internes. Django Ninja 1.5 est validé avec cette version. La version minimale de Pydantic requise est désormais 2.12.
Suppression du paramètre csrf (changement cassant)
C’est le changement le plus impactant de cette version. Le paramètre csrf de NinjaAPI est supprimé.
# Avant (1.4 et antérieur) — ne fonctionne plus api = NinjaAPI(csrf=True) # Après (1.5) — la protection CSRF est gérée via les backends d'authentification api = NinjaAPI()
Depuis la version 1.1, la protection CSRF était automatiquement activée lorsqu’un backend d’authentification basé sur les cookies était utilisé. Le paramètre csrf était donc devenu redondant. Sa suppression simplifie l’API publique, mais nécessite de mettre à jour le code existant avant de migrer.
Si vous utilisiez csrf=True explicitement, vérifiez que votre backend d’authentification gère correctement la protection CSRF. Si vous utilisiez SessionAuth, vous n’avez rien à faire — elle active la protection CSRF automatiquement.
Deprecation de la classe Config Pydantic au profit de ConfigDict
Pydantic v2 a introduit ConfigDict pour remplacer la classe interne Config. Django Ninja 1.5 marque officiellement la classe Config comme dépréciée dans les schémas et encourage la migration vers ConfigDict.
from pydantic import ConfigDict
# Avant — déprécié
class MySchema(Schema):
class Config:
validate_assignment = True
# Après — à utiliser
class MySchema(Schema):
model_config = ConfigDict(validate_assignment=True)
La syntaxe Config continuera de fonctionner dans cette version mais générera un avertissement. Elle sera supprimée dans une version future.
items_attribute personnalisable dans la pagination
PageNumberPagination et LimitOffsetPagination utilisaient items comme clé fixe dans la réponse paginée. Il est maintenant possible de personnaliser ce nom via items_attribute.
from ninja.pagination import PageNumberPagination
class CustomPagination(PageNumberPagination):
items_attribute = "products"
La réponse JSON contiendra alors products à la place de items. Utile pour maintenir la cohérence avec des APIs existantes ou des conventions de nommage propres au projet.
{
"count": 42,
"products": [...]
}
Correction de l’authentification sync avec des opérations async
Un bug affectait les backends d’authentification synchrones utilisés dans des contextes où des opérations asynchrones étaient présentes. Dans certaines configurations, cela provoquait des erreurs d’exécution difficiles à diagnostiquer. C’est corrigé.
Correction des dictionnaires imbriqués avec valeurs par défaut
Les schémas contenant des dictionnaires imbriqués avec des valeurs par défaut pouvaient dans certains cas partager la même référence d’objet entre instances, entraînant des effets de bord inattendus. Le bug classique du mutable default en Python, appliqué aux schémas Pydantic. C’est corrigé.
É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 Ninja 1.5 est une version de maturité qui nettoie l’API publique et met à jour les dépendances. Les deux points critiques à vérifier avant de mettre à jour : la suppression du paramètre csrf et la version minimale de Python qui passe à 3.9. Pour le reste, les améliorations sont progressives et bienvenues. Prenez le temps de lire les notes de migration — ce n’est pas une mise à jour qu’on applique à l’aveugle.