Exercices Concepts Web & Django Vue Django qui retourne du JSON
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Vue Django qui retourne du JSON

En Django, une vue est une fonction qui recoit un objet HttpRequest et retourne un objet HttpResponse. C'est la brique de base de toute application web Django.

Pour créer une API qui retourne du JSON, Django fournit JsonResponse, une sous-classe de HttpResponse qui serialise automatiquement un dictionnaire en JSON et ajoute le bon Content-Type.

from django.http import JsonResponse

def ma_vue(request):
return JsonResponse({'message': 'bonjour'})

Un objet HttpRequest a plusieurs attributs utiles :
- request.method : la méthode HTTP ('GET', 'POST', etc.)
- request.path : le chemin de l'URL
- request.GET : un dictionnaire des paramètres d'URL (query string)

Écris une fonction vue api_status(request) qui retourne un JsonResponse avec :
- Si request.method == 'GET' : retourne {'status': 'ok', 'method': 'GET'} avec status 200
- Si request.method != 'GET' : retourne {'error': 'Méthode non autorisee'} avec status 405

Écris aussi api_echo(request) qui :
- Recupere le paramètre 'message' dans request.GET (avec une valeur par défaut 'hello')
- Retourne un JsonResponse avec {'echo': message, 'length': len(message)}

Exemple :

req = HttpRequest()
req.method = 'GET'
resp = api_status(req)
resp.status_code vaut 200

Tests (3/4)

Status GET 200
req = HttpRequest()
req.method = 'GET'
resp = api_status(req)
assert resp.status_code == 200
data = json.loads(resp.content)
assert data['status'] == 'ok'
Status POST 405
req = HttpRequest()
req.method = 'POST'
resp = api_status(req)
assert resp.status_code == 405
Echo par défaut
from django.http import QueryDict
req = HttpRequest()
req.method = 'GET'
resp = api_echo(req)
data = json.loads(resp.content)
assert data['echo'] == 'hello' and data['length'] == 5

+ 0 tests cachés

Indices (3 disponibles)

solution.py