Se rendre au contenu

Django REST Framework 3.8

Le grand ménage de printemps
3 avril 2018 par
Django REST Framework 3.8
Makersquad

Date de sortie : 03 avril 2018

Documentation officielle : https://www.django-rest-framework.org/community/release-notes/#38x-series

Cette version de Django REST Framework (DRF) ne révolutionne pas l’API, mais elle fait quelque chose d’aussi précieux : elle nettoie la dette technique accumulée, résout un grand nombre d’issues ouvertes depuis longtemps et pose les bases d’une compatibilité solide avec Django 2.0 et Python 3.


Les nouveautés principales

Nouveau décorateur @action unifié

L’ancienne paire de décorateurs @list_route et @detail_route est dépréciée au profit d’un seul décorateur @action, plus explicite et plus flexible. Le paramètre detail indique si l’action s’applique à une instance unique ou à la liste.

from rest_framework.decorators import action

class UserViewSet(viewsets.ModelViewSet):

    @action(detail=True, methods=['post'])
    def set_password(self, request, pk=None):
        # action sur un objet précis : /users/{pk}/set_password/
        ...

    @action(detail=False)
    def recent_users(self, request):
        # action sur la collection : /users/recent_users/
        ...

C’est un changement simple mais qui rend le code beaucoup plus lisible au premier coup d’oeil.


Comportement cohérent des champs en lecture seule

Les champs déclarés read_only=True sont désormais systématiquement exclus des opérations d’écriture, y compris dans les cas limites qui pouvaient provoquer des comportements inattendus. Un vieux sujet qui traînait dans le tracker depuis un moment.


Dépréciation de exclude_from_schema

Le paramètre exclude_from_schema sur les vues est remplacé par une approche plus propre : assigner schema = None directement sur la vue pour l’exclure de la génération de schéma.

class MyView(APIView):
    schema = None  # exclut cette vue du schéma généré


Maintenance et correctifs

DRF 3.8 résout plusieurs dizaines d’issues ouvertes : comportements incohérents dans les serializers, gestion des champs imbriqués, compatibilité avec Django 2.0 et focus sur Python 3. Une version qu’on installe sereinement en production.


É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.8 est une version de consolidation indispensable pour tout projet qui monte vers Django 2.0. Le nouveau décorateur @action simplifie la lecture des ViewSets, et les nombreux correctifs rendent l’ensemble plus prévisible. Pas de révolution, mais exactement ce dont un framework mature a besoin de temps en temps.

Python 3.12 est sorti