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.
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).
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