Les briques de base de Django DRF
Repères utiles :
- Django DRF LLM Wiki
- SCHEMA
- Comprendre Django
- Comprendre Django REST Framework
- Comment penser une API avec Django DRF
- Parcours de lecture
- FAQ, erreurs fréquentes et conseils pratiques
Cette note explique les composants essentiels que l'on retrouve dans un projet Django DRF : modèles, serializers, vues, viewsets, routers, authentification et permissions. Le but est de comprendre leur rôle sans se noyer trop tôt dans le code.
1. Pourquoi cette note est importante
Quand on découvre Django DRF, on entend très vite une série de mots qui peuvent sembler abstraits :
- modèle
- serializer
- vue
- viewset
- router
- auth
- permissions
Le problème, c'est qu'on peut les mémoriser sans vraiment comprendre comment ils coopèrent.
Or, pour progresser, il faut une image mentale simple.
2. La vision d'ensemble en une phrase
Dans un backend Django DRF :
- le modèle représente la donnée métier
- le serializer transforme et valide la donnée échangée
- la vue ou le viewset porte la logique d'accès
- le router branche les routes
- l'authentification identifie l'utilisateur
- les permissions décident ce qu'il a le droit de faire
3. Première brique : le modèle
Le modèle représente une entité importante de ton domaine.
Exemples :
- User
- Project
- Task
- Order
- Invoice
- Inspection
Un modèle sert à définir :
- les champs importants
- les relations entre entités
- une partie des contraintes du domaine
En pratique, le modèle est très lié à la base de données. Mais il ne faut pas le voir uniquement comme une table. Il faut aussi le voir comme une représentation structurée d'un objet métier.
Intuition simple
Si ton application gère des projets, le modèle Project répond à la question :
qu'est-ce qu'un projet dans ce système ?
4. Deuxième brique : le serializer
Le serializer est l'une des grandes briques spécifiques de DRF.
Il joue deux rôles majeurs.
Rôle 1 — Représenter la donnée
Quand le backend veut renvoyer une ressource au client, il doit produire une forme exploitable, souvent du JSON. Le serializer aide à produire cette représentation.
Rôle 2 — Valider la donnée entrante
Quand le client envoie des données, le serializer aide à vérifier :
- que les champs attendus sont présents
- que les types sont corrects
- que certaines règles sont respectées
Intuition simple
Le serializer répond à la question :
comment cette ressource est-elle montrée ou acceptée par l'API ?
5. Troisième brique : la vue
La vue reçoit une requête et décide comment répondre.
Elle orchestre notamment :
- la lecture de la requête
- l'appel à la logique utile
- le choix du serializer
- la construction de la réponse
Intuition simple
La vue répond à la question :
que doit faire le backend quand cette route est appelée ?
6. Quatrième brique : le viewset
Le viewset est une façon pratique de regrouper plusieurs actions autour d'une même ressource.
Au lieu d'avoir une logique dispersée, on peut centraliser :
- la liste
- le détail
- la création
- la mise à jour
- la suppression
Cela est particulièrement confortable quand une ressource suit une logique CRUD classique.
Intuition simple
Le viewset répond à la question :
quelles sont les opérations API cohérentes autour de cette ressource ?
7. Cinquième brique : le router
Le router sert à relier automatiquement certains viewsets à des routes API.
Il aide à éviter de réécrire manuellement trop de configuration répétitive.
Par exemple, il peut générer une structure cohérente pour :
- la liste d'une ressource
- son détail
- d'autres actions associées
Intuition simple
Le router répond à la question :
comment les points d'entrée API sont-ils branchés proprement ?
8. Sixième brique : l'authentification
L'authentification sert à répondre à une question fondamentale :
qui appelle l'API ?
C'est le mécanisme qui permet d'identifier l'utilisateur ou le client.
Important : l'authentification ne dit pas encore ce que cet utilisateur a le droit de faire. Elle dit d'abord qui il est.
9. Septième brique : les permissions
Les permissions répondent à l'autre grande question :
maintenant qu'on sait qui appelle, que cette personne a-t-elle le droit de faire ?
Exemples :
- lecture autorisée, écriture interdite
- accès réservé aux utilisateurs connectés
- accès réservé à certains rôles
- accès limité aux objets appartenant à l'utilisateur
Intuition simple
L'authentification identifie. Les permissions autorisent ou refusent.
10. Le cycle mental complet d'une requête
Voici une manière simple d'imaginer le passage d'une requête dans Django DRF.
Étape 1 — Le client appelle une route
Exemple mental : le frontend veut consulter ou créer une ressource.
Étape 2 — La route trouve la bonne logique
Le système détermine quelle vue ou quel viewset doit traiter cette requête.
Étape 3 — L'authentification identifie l'appelant
Le backend essaie de savoir qui fait la demande.
Étape 4 — Les permissions vérifient les droits
On détermine si cette personne a le droit d'effectuer l'action demandée.
Étape 5 — Le viewset ou la vue exécute la logique
Le backend décide quoi faire : lire, créer, modifier, supprimer, déclencher une action métier, etc.
Étape 6 — Le serializer valide ou représente la donnée
- en entrée : validation
- en sortie : transformation vers une réponse exploitable
Étape 7 — Le modèle et l'ORM interagissent avec la base
Les données sont lues ou enregistrées.
Étape 8 — La réponse est renvoyée au client
Le client reçoit une réponse structurée.
11. Exemple conceptuel très simple
Imaginons une ressource Project.
Le modèle
Il décrit ce qu'est un projet :
- nom
- description
- propriétaire
- statut
- date de création
Le serializer
Il décide :
- quels champs l'API montre
- quels champs doivent être validés à la création ou mise à jour
Le viewset
Il gère les actions :
- lister les projets
- afficher un projet
- créer un projet
- modifier un projet
- supprimer un projet
Le router
Il branche ces actions aux routes correspondantes.
L'authentification
Elle vérifie qui appelle.
Les permissions
Elles décident par exemple qu'un utilisateur ne peut modifier que ses propres projets.
12. Ce qu'il ne faut pas confondre
Modèle vs serializer
Le modèle décrit la structure métier et la persistance. Le serializer décrit la représentation et la validation API.
Vue / viewset vs router
La vue ou le viewset contient la logique de traitement. Le router branche cette logique aux routes.
Authentification vs permissions
L'authentification répond à “qui ?”. Les permissions répondent à “a-t-il le droit ?”.
13. Où se trompent souvent les débutants
Erreur 1 — Tout mettre dans le serializer
Le serializer ne doit pas devenir un endroit où l'on met toute la logique métier du monde.
Erreur 2 — Tout mettre dans la vue
La vue ne doit pas être un bloc géant confus qui mélange validation, règles métier, permissions, accès aux données et transformations.
Erreur 3 — Penser que le router “fait la logique”
Le router n'exécute pas la logique métier. Il connecte les routes.
Erreur 4 — Penser qu'un modèle suffit à définir l'API
Ce n'est pas parce qu'un objet existe en base qu'il doit être exposé tel quel dans l'API.
Erreur 5 — Sous-estimer les permissions
Une API peut sembler fonctionner techniquement tout en étant dangereuse du point de vue des accès.
14. Comment retenir simplement les rôles
Tu peux retenir la formule suivante :
- modèle = ce que le système stocke
- serializer = ce que l'API accepte ou montre
- vue / viewset = ce que l'API fait
- router = comment on y accède
- auth = qui appelle
- permissions = ce qu'il a le droit de faire
15. Pourquoi cette séparation est utile
Cette séparation est précieuse parce qu'elle évite de mélanger toutes les responsabilités.
Si tout est mélangé :
- le projet devient vite opaque
- les erreurs sont plus dures à corriger
- les permissions deviennent fragiles
- l'évolution du produit devient pénible
Au contraire, quand les briques ont des rôles relativement clairs, le projet devient plus lisible.
16. Brique technique ne veut pas dire pensée technique seulement
Un point important : ces briques ne sont pas seulement techniques. Elles traduisent aussi une manière de penser le backend.
Par exemple :
- si tu ne sais pas quel acteur a le droit de modifier un objet, tu auras du mal à écrire les permissions
- si tu ne sais pas quelles données doivent être exposées, tu auras du mal à écrire le serializer
- si tu ne sais pas quelles opérations produit comptent vraiment, tu auras du mal à dessiner le viewset
C'est pour cela que Comment penser une API avec Django DRF doit toujours rester proche de cette note.
17. Résumé final
Les briques de base de Django DRF forment une chaîne cohérente :
- le modèle structure la donnée métier
- le serializer la valide et la représente
- la vue ou le viewset gère le traitement
- le router branche les routes
- l'authentification identifie l'appelant
- les permissions contrôlent les droits
Comprendre cette chaîne est essentiel avant de plonger dans des tutoriels plus orientés cas d'usage.
18. Pour aller plus loin
Lire ensuite :