Mis a jour le 2025-04-14, 12:10

Request et Response

Request

Principaux champs et méthodes d'un objet HttpRequest :
  • scheme : http ou https.
  • body : le corps brut de la requête.
  • path : l'URL, sans les arguments après le '?'.
  • get_full_path() : renvoie l'URL, y compris les arguments après le '?'.
  • encoding : le charset de la requête, qui peut être None.
  • GET : le dictionnaire des paramètres en GET, si c'est un get, mais en fait, c'est un objet QueryDict.
  • POST : le dictionnaire des paramètres en POST, si c'est un post, mais en fait, c'est un objet QueryDict.
  • COOKIES : le dictionnaire des cookies.
  • FILES : le dictionnaire des fichiers attachés avec comme clef le name du champ input. En fait, c'est un objet MultiValueDict, et pour être correctement rempli, il faut que la forme ait : enctype='multipart/form-data'.
  • META : dictionnaire des headers http, dans lequel on trouve notamment toutes les variables cgi classiques comme REMOTE_USER (si user authentifié), SERVER_NAME, etc ...
  • session : un objet SessionStore qui contient les infos de session.
  • get_host() : renvoie hôte:port
  • is_ajax() : renvoie True si la requête a été faite par XMLHttpRequest.

Response

Principaux champs et méthodes d'un objet de la classe HttpResponse :
  • constructeur : HttpResponse('mon contenu', content_type = 'text/plain;charset=utf-8', status = 200).
  • set-cookie(name, value, max-age, expires = None, path = '/', domain = None) positionne un cookie :
    • max-age est le temps d'expiration en secondes.
    • expires est un objet de type datetime.
    • si domaine défini à '.mydomain.com', le cookie sera valable sur toutes les machines du domaine.
  • delete_cookie(name, path = '/', domain = None) : il faut indiquer le même path et le même domain que quand on a rajouté le cookie.
  • write() : permet d'écrire la réponse.
  • flush() : permet de vider le tampon d'écriture.
Sous-classes de HttpResponse :
  • dans une view, on doit renvoyer un objet de type HttpResponse, mais on peut aussi renvoyer une de ses sous-classes.
  • exemple de sous-classes :
    • HttResponseRedirect('/new/path') : redirection vers un nouveau chemin (statut 302).
    • HttpResponsePermanentRedirect('/new/path') : comme HttResponseRedirect, mais permanent (statut 301).
    • HttpResponseBadRequest : comme une HttpResponse, mais renvoie un statut 400.
    • HttpResponseNotFound : comme une HttpResponse, mais renvoie un statut 404.
    • HttpResponseForbidden : comme une HttpResponse, mais renvoie un statut 403.
    • JsonResponse : sous-classe qui facilite le codage des réponse de type JSON :
      • JsonResponse(myDict) : réponse, avec le dictionnaire sérialisé en JSON.
      • JsonResponse(myList, safe = False) : on peut utiliser autre chose qu'un dictionnaire à condition de mettre safe à False (car les vieux navigateurs pouvaient avoir leur javascript attaqué lors du parsin des listes).
      • JsonResponse(myDict, encoder = myEncoder) : on peut donner un autre encoder JSON que celui par défaut DjangoJSONEncoder.

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert