Les routes (endpoints Django)
Dans Django, une route est l’URL que votre application expose et à laquelle les clients (navigateurs, applications mobiles, ou autres services) peuvent envoyer des requêtes.
Chaque route correspond généralement à une fonction Python (ou une classe appelée view) qui traite la requête et renvoie une réponse.
-
Route = URL
-
Endpoint = la fonction ou la classe qui gère la route
-
Méthode HTTP = le type de requête que la route accepte (GET, POST, PUT, DELETE…)
Comment ça fonctionne ?
Django utilise un système de URLconf (fichier urls.py
) pour lier des URL à des fonctions ou des classes appelées views.
Quand un client envoie une requête à cette URL, Django appelle la view correspondante.
La view retourne une réponse HTTP, qui peut être du texte, du JSON ou un rendu HTML avec un template.
Exemple conceptuel (sans code concret)
-
URL : /users/
-
View : récupère la liste des utilisateurs depuis la base de données
-
Méthode HTTP : GET
-
Réponse : JSON contenant la liste des utilisateurs
Ici, l’endpoint /users/
est associé à une view qui définit la logique pour cette route.
Méthodes HTTP et endpoints
Chaque route peut accepter une ou plusieurs méthodes HTTP :
-
GET : récupérer des données
-
POST : créer une nouvelle ressource
-
PUT / PATCH : mettre à jour une ressource
-
DELETE : supprimer une ressource
Pourquoi c’est important :
-
Permet de structurer l’API ou le site de manière RESTful
-
Chaque action peut avoir sa propre route ou sa propre méthode sur la même route
-
Facilite la maintenance et la compréhension de l’application
Variables dans les routes
Django permet de définir des routes dynamiques avec des variables dans l’URL :
Exemple conceptuel : /users/int:id/
-
<int:id>
est une variable capturée par Django et transmise à la view -
Cela permet de récupérer, modifier ou supprimer un utilisateur spécifique
Avantage pédagogique :
-
La même view peut gérer plusieurs ressources selon la valeur de la variable
-
Les routes restent claires et lisibles pour les développeurs
Retour d’une route
Une view associée à une route retourne généralement :
-
Une réponse JSON pour une API (via
JsonResponse
) -
Un code HTTP pour indiquer le succès ou l’échec (200, 201, 404…)
-
Optionnellement, un rendu HTML avec un template
Pourquoi c’est fondamental :
-
Chaque route devient un point de communication clair avec les clients
-
Permet aux applications clientes de comprendre le résultat de la requête
-
Facilite le débogage et le suivi du fonctionnement de l’application
Bonnes pratiques pour les routes Django
-
Nom clair et RESTful :
/users/
pour la collection,/users/<id>/
pour un élément précis -
Séparer les méthodes HTTP : utiliser
if request.method == "GET"
ou des class-based views avec des méthodesget()
,post()
, etc. -
Validation des paramètres : Django valide les types directement dans les patterns d’URL ou via des formulaires/sérializers
-
Gestion des erreurs : renvoyer des codes HTTP adaptés et des messages explicites
-
Documentation : pour les APIs, utiliser Django REST Framework pour générer la documentation automatiquement
En résumé, dans Django :
-
Une route est l’URL accessible par le client
-
Un endpoint est la view (fonction ou classe) qui traite la requête
-
Les méthodes HTTP déterminent le type d’action
-
Les variables dans l’URL permettent de rendre les endpoints dynamiques
-
Une réponse claire et structurée (JSON + code HTTP ou template) est essentielle pour une application maintenable
Fonctions :
-
Routes Django (exemple)