logo oujood
🔍

ViewSets et Routers dans Django REST Framework

Regroupez votre logique CRUD et laissez Django gérer le routage automatiquement.

OUJOOD.COM

Si vous avez suivi les étapes précédentes, vous savez créer des vues et les lier à des URLs. Mais pour une ressource classique (comme des articles ou des commentaires), vous allez souvent répéter les mêmes schémas : une vue pour lister, une pour créer, une pour voir le détail, etc. Les ViewSets permettent de regrouper tout cela dans une seule classe, et les Routers s'occupent de générer les URLs à votre place.

Pourquoi utiliser un ViewSet ?

Un ViewSet n'est rien d'autre qu'une classe qui combine la logique de plusieurs vues liées. Au lieu d'écrire une classe pour la liste et une autre pour le détail, vous utilisez par exemple un ModelViewSet. Django comprend alors tout seul comment traiter les différentes méthodes HTTP (GET, POST, PUT, DELETE) pour cette ressource.

  📋 Copier le code

from rest_framework import viewsets
from .models import Article
from .serializers import ArticleSerializer

class ArticleViewSet(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

Le rôle du Router

C'est là que la magie opère. Puisque votre ViewSet contient toute la logique, vous n'avez plus besoin de déclarer chaque URL manuellement dans votre fichier urls.py. Vous enregistrez votre ViewSet auprès d'un Router, et celui-ci crée automatiquement toutes les routes nécessaires (liste, création, détail, modification, suppression).

  📋 Copier le code

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ArticleViewSet

router = DefaultRouter()
router.register(r'articles', ArticleViewSet)

urlpatterns = [
    path('api/', include(router.urls)),
]

Un code plus propre et maintenable

Je préfère cette approche car elle réduit drastiquement le nombre de lignes de code. Moins de code signifie moins de risques d'erreurs et une maintenance simplifiée. C'est l'approche "Django" par excellence : ne pas se répéter (DRY - Don't Repeat Yourself).

Nous avons maintenant fait le tour des bases solides pour construire une API. Pour rendre votre application encore plus intelligente et traiter des actions en coulisses, nous allons nous pencher sur les middlewares Django.

Par carabde | Mis à jour le 08/05/2026