Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
ViewSet simule
Jusqu'ici tu as ecrit des fonctions separees pour chaque operation. En vrai projet DRF, tu regrouperais tout ca dans un ViewSet : une seule classe avec des methodes list, create, retrieve, update, destroy. C'est beaucoup plus organise et ca evite la duplication.
Le ViewSet recoit une requete et, selon la methode HTTP et la presence d'un identifiant, il dispatche vers la bonne methode :
GET sans id -> list() (liste tous les objets) POST sans id -> create() (crée un objet) GET avec id -> retrieve() (detail d'un objet) PUT avec id -> update() (modifie un objet) DELETE avec id -> destroy() (supprime un objet)
Tu vas créer une classe ArticleViewSet qui :
Stocke les articles dans self.db (dictionnaire id vers article) et self.next_id
A une méthode dispatch(method, data=None, pk=None) qui route vers la bonne méthode selon la méthode HTTP et la presence de pk (primary key, l'identifiant).
Si la méthode n'est pas reconnue, retourne {'status': 405, 'error': 'Méthode non autorisee'}.
Si pk est donne mais l'objet n'existe pas (pour retrieve, update, destroy), retourne {'status': 404, 'error': 'Non trouve'}.