{"title":"Les objets requête et réponse","version":"3.2","locale":"fr","docname":"ref/request-response","url":"/fr/3.2/ref/request-response/","canonical":"https://djangodocs.dev/fr/3.2/ref/request-response/","summary":"Aperçu rapide Lien vers cette rubrique # Django utilise des objets requête et réponse pour transmettre l’état au travers du système. Lorsqu’une page est demandée,…","html":"<span id=\"request-and-response-objects\"></span><h1>Les objets requête et réponse<a class=\"heading-anchor\" href=\"#module-django.http\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"quick-overview\">\n<h2>Aperçu rapide<a class=\"heading-anchor\" href=\"#quick-overview\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django utilise des objets requête et réponse pour transmettre l’état au travers du système.</p>\n<p>Lorsqu’une page est demandée, Django crée un objet <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> contenant des métadonnées au sujet de la requête. Puis, Django charge la vue appropriée, lui transmettant l’objet <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> comme premier paramètre. Chaque vue est responsable de renvoyer un objet <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>.</p>\n<p>Ce document présente l’API des objets <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> et <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>, qui sont définis dans le module <a class=\"reference internal\" href=\"#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.http</span></code></a>.</p>\n</section>\n<section id=\"httprequest-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code><a class=\"heading-anchor\" href=\"#httprequest-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpRequest</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"attributes\">\n<span id=\"httprequest-attributes\"></span><h3>Attributs<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Tous les attributs doivent être considérés en lecture seule sauf mention contraire.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.scheme\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">scheme</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.scheme\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne représentant le protocole de la requête (normalement <code class=\"docutils literal notranslate\"><span class=\"pre\">http</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">https</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.body\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">body</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.body\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le corps HTTP brut de la requête sous forme de chaine binaire. Cet attribut est utile pour traiter les données de manière différente que ne le fait la gestion habituelle des formulaires HTML : images binaires, contenu XML, etc. Pour ce qui concerne les données de formulaire conventionnelles, utilisez <a class=\"reference internal\" href=\"#django.http.HttpRequest.POST\" title=\"django.http.HttpRequest.POST\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpRequest.POST</span></code></a>.</p>\n<p>Vous pouvez aussi lire le contenu d’un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> en utilisant une interface de type fichier avec <a class=\"reference internal\" href=\"#django.http.HttpRequest.read\" title=\"django.http.HttpRequest.read\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">HttpRequest.read()</span></code></a> ou <a class=\"reference internal\" href=\"#django.http.HttpRequest.readline\" title=\"django.http.HttpRequest.readline\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">HttpRequest.readline()</span></code></a>. Accéder à l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">body</span></code> <em>après</em> avoir lu le contenu de la requête avec l’une de ces méthodes de flux d’entrée-sortie produira une <code class=\"docutils literal notranslate\"><span class=\"pre\">RawPostDataException</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.path\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">path</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.path\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne représentant le chemin complet vers la page demandée, sans le protocole, le domaine ou la chaîne de requête.</p>\n<p>Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/musique/groupes/les_beatles/&quot;</span></code></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.path_info\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">path_info</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.path_info\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sous certaines configurations de serveur Web, la partie de l’URL après le nom d’hôte est divisée en une partie « préfixe de script » et une partie « information de chemin ». L’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">path_info</span></code> contient toujours la partie information de chemin du chemin, quel que soit le serveur Web utilisé. Il est préférable d’utiliser cet attribut plutôt que <a class=\"reference internal\" href=\"#django.http.HttpRequest.path\" title=\"django.http.HttpRequest.path\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">path</span></code></a>, car cela améliore la portabilité du code entre les serveurs de test et de déploiement.</p>\n<p>Par exemple, si le réglage <code class=\"docutils literal notranslate\"><span class=\"pre\">WSGIScriptAlias</span></code> de votre application est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/minfo&quot;</span></code>, alors <code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> pourrait être <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/minfo/musique/groupes/les_beatles/&quot;</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">path_info</span></code> serait <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/musique/groupes/les_beatles/&quot;</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.method\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">method</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.method\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne correspondant à la méthode HTTP utilisée dans la requête. Elle est toujours en majuscules. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">method</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;GET&#39;</span><span class=\"p\">:</span>\n    <span class=\"n\">do_something</span><span class=\"p\">()</span>\n<span class=\"k\">elif</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">method</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;POST&#39;</span><span class=\"p\">:</span>\n    <span class=\"n\">do_something_else</span><span class=\"p\">()</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.encoding\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">encoding</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.encoding\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne représentant le codage actuel utilisé pour décoder les données soumises par formulaire (ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, ce qui signifie que c’est le réglage <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a> qui est utilisé). Vous pouvez redéfinir cet attribut pour modifier le codage utilisé lors de l’accès aux données de formulaires. Toute nouvelle lecture d’attribut (comme l’accès à <a class=\"reference internal\" href=\"#django.http.HttpRequest.GET\" title=\"django.http.HttpRequest.GET\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">GET</span></code></a> ou à <a class=\"reference internal\" href=\"#django.http.HttpRequest.POST\" title=\"django.http.HttpRequest.POST\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">POST</span></code></a>) utilisera la nouvelle valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code>. C’est utile lorsque vous savez que les données de formulaire ne sont pas dans le codage <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.content_type\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">content_type</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.content_type\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne représentant le type MIME de la requête, tiré de l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_TYPE</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.content_params\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">content_params</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.content_params\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un dictionnaire de paramètres clé/valeur inclus dans l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_TYPE</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.GET\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">GET</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.GET\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un objet de type dictonnaire contenant tous les paramètres HTTP GET donnés. Voir la documentation <a class=\"reference internal\" href=\"#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code></a> ci-dessous.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.POST\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">POST</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.POST\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un objet de type dictonnaire contenant tous les paramètres HTTP POST donnés, pour autant que la requête contienne des données de formulaire. Voir la documentation <a class=\"reference internal\" href=\"#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code></a> ci-dessous. Si vous avez besoin d’accéder à des données brutes ou non liées à un formulaire provenant de la requête, privilégiez plutôt l’accès par l’attribut <a class=\"reference internal\" href=\"#django.http.HttpRequest.body\" title=\"django.http.HttpRequest.body\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpRequest.body</span></code></a>.</p>\n<p>Il est possible qu’une requête arrive par POST avec un dictionnaire <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> vide, comme par exemple quand un formulaire est soumis par la méthode HTTP POST mais ne contient pas de données de formulaire. C’est pourquoi il ne faut pas utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span> <span class=\"pre\">request.POST</span></code> pour savoir si la méthode POST a été utilisée, mais plutôt <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span> <span class=\"pre\">request.method</span> <span class=\"pre\">==</span> <span class=\"pre\">&quot;POST&quot;</span></code> (voir <a class=\"reference internal\" href=\"#django.http.HttpRequest.method\" title=\"django.http.HttpRequest.method\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpRequest.method</span></code></a>).</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> n’inclut <em>pas</em> d’informations quant à l’envoi de fichiers. Voir <a class=\"reference internal\" href=\"#django.http.HttpRequest.FILES\" title=\"django.http.HttpRequest.FILES\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">FILES</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.COOKIES\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">COOKIES</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.COOKIES\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un dictionnaire contenant tous les cookies. Les clés et les valeurs sont des chaînes.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.FILES\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">FILES</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.FILES\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un objet de type dictionnaire contenant tous les fichiers envoyés. Chaque clé de <code class=\"docutils literal notranslate\"><span class=\"pre\">FILES</span></code> correspond à l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;input</span> <span class=\"pre\">type=&quot;file&quot;</span> <span class=\"pre\">name=&quot;&quot;&gt;</span></code>. Chaque valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">FILES</span></code> est un objet <a class=\"reference internal\" href=\"/fr/3.2/ref/files/uploads/#django.core.files.uploadedfile.UploadedFile\" title=\"django.core.files.uploadedfile.UploadedFile\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code></a>.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/3.2/topics/files/\"><span class=\"doc\">Gestion des fichiers</span></a> pour plus d’informations.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">FILES</span></code> ne contient des données que si la méthode de requête est POST et que l’élément <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;form&gt;</span></code> qui a servi pour envoyer la requête contient <code class=\"docutils literal notranslate\"><span class=\"pre\">enctype=&quot;multipart/form-data&quot;</span></code>. Sinon, <code class=\"docutils literal notranslate\"><span class=\"pre\">FILES</span></code> est un objet de type dictionnaire vide.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.META\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">META</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.META\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un dictionnaire contenant tous les en-têtes HTTP disponibles. Ces en-têtes dépendent du client et du serveur, mais voici tout de même quelques exemples :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_LENGTH</span></code> – la longueur du corps de la requête (sous forme de chaîne).</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_TYPE</span></code> – le type MIME du corps de la requête.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_ACCEPT</span></code> – types de contenu acceptables pour la réponse.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_ACCEPT_ENCODING</span></code> – codages acceptables pour la réponse.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_ACCEPT_LANGUAGE</span></code> – langues acceptables pour la réponse.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_HOST</span></code> – l’en-tête HTTP Host envoyé par le client.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_REFERER</span></code> – la page d’origine, s’il y en a une.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_USER_AGENT</span></code> – la chaîne « user-agent » du client.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">QUERY_STRING</span></code> – la chaîne des paramètres de requête, sous forme de chaîne unique (et non analysée).</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">REMOTE_ADDR</span></code> – l’adresse IP du client.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">REMOTE_HOST</span></code> – le nom d’hôte du client.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">REMOTE_USER</span></code> – l’utilisateur authentifié par le serveur Web, s’il y en a un.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">REQUEST_METHOD</span></code> – une chaîne telle que <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;GET&quot;</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;POST&quot;</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">SERVER_NAME</span></code> – le nom d’hôte du serveur.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">SERVER_PORT</span></code> – le port du serveur (sous forme de chaîne).</p></li>\n</ul>\n<p>À l’exception de <code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_LENGTH</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_TYPE</span></code>, tels que présentés ci-dessus, tout en-tête HTTP de la requête est converti en clés <code class=\"docutils literal notranslate\"><span class=\"pre\">META</span></code> en convertissant tous les caractères en majuscules, remplaçant les tirets par des soulignements et en ajoutant un préfixe <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_</span></code> au nom. Par exemple, un en-tête nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">X-Bender</span></code> correspond à la clé <code class=\"docutils literal notranslate\"><span class=\"pre\">META</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_X_BENDER</span></code>.</p>\n<p>Notez que <a class=\"reference internal\" href=\"/fr/3.2/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> ignore tous les en-têtes contenant des soulignements dans leur nom, ce qui fait qu’ils n’apparaîtront pas dans <code class=\"docutils literal notranslate\"><span class=\"pre\">META</span></code>. Ceci évite la falsification d’en-tête basée sur l’ambiguïté entre les soulignements et les tirets qui sont tous deux normalisés en soulignements dans les variables d’environnement WSGI. Cela correspond au comportement des serveurs Web tels que Nginx et Apache 2.4+.</p>\n<p><a class=\"reference internal\" href=\"#django.http.HttpRequest.headers\" title=\"django.http.HttpRequest.headers\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpRequest.headers</span></code></a> est une manière plus simple d’accéder à tous les en-têtes préfixés par HTTP, ainsi qu’à <code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_LENGTH</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">CONTENT_TYPE</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.headers\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">headers</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.headers\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un objet similaire à un dictionnaire, insensible à la casse, qui donne accès à tous les en-têtes de requête préfixés par HTTP (plus <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code>).</p>\n<p>Le nom de chaque en-tête est mis en forme en casse de titre (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">User-Agent</span></code>) lors de leur affichage. Vous pouvez accéder aux en-têtes de manière insensible à la casse</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span>\n<span class=\"go\">{&#39;User-Agent&#39;: &#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6&#39;, ...}</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"s1\">&#39;User-Agent&#39;</span> <span class=\"ow\">in</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"s1\">&#39;user-agent&#39;</span> <span class=\"ow\">in</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span>\n<span class=\"go\">True</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"p\">[</span><span class=\"s1\">&#39;User-Agent&#39;</span><span class=\"p\">]</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"p\">[</span><span class=\"s1\">&#39;user-agent&#39;</span><span class=\"p\">]</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s1\">&#39;User-Agent&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"s1\">&#39;user-agent&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n</code></pre></div>\n<p>Afin de pouvoir être utilisé par exemple dans les gabarits Django, les en-têtes peuvent aussi être accédés avec une syntaxe par soulignement au lieu de tirets</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">{{</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"o\">.</span><span class=\"n\">user_agent</span> <span class=\"p\">}}</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.resolver_match\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">resolver_match</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.resolver_match\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une instance de <a class=\"reference internal\" href=\"/fr/3.2/ref/urlresolvers/#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ResolverMatch</span></code></a> représentant l’URL résolue. Cet attribut n’est défini qu’après la phase de résolution d’URL, ce qui veut dire qu’il est disponible dans toutes les vues, mais pas dans les intergiciels qui sont exécutés avant la phase de résolution d’URL (l’attribut est cependant disponible dans <a class=\"reference internal\" href=\"/fr/3.2/topics/http/middleware/#process_view\" title=\"process_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">process_view()</span></code></a>).</p>\n</dd></dl>\n\n</section>\n<section id=\"attributes-set-by-application-code\">\n<h3>Attributs définis par le code d’application<a class=\"heading-anchor\" href=\"#attributes-set-by-application-code\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django ne définit pas lui-même ces attributs, mais il les exploite s’ils sont définis par une application.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.current_app\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">current_app</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.current_app\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La balise de gabarit <a class=\"reference internal\" href=\"/fr/3.2/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">url</span></code></a> utilise sa valeur comme paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">current_app</span></code> de <a class=\"reference internal\" href=\"/fr/3.2/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.urlconf\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">urlconf</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.urlconf\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ceci sera utilisé comme configuration d’URL racine pour la requête en cours, écrasant la valeur de <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a>. Voir <a class=\"reference internal\" href=\"/fr/3.2/topics/http/urls/#how-django-processes-a-request\"><span class=\"std std-ref\">Processus de traitement des requêtes par Django</span></a> pour plus de détails.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">urlconf</span></code> peut être défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> pour annuler tout changement effectué par un intergiciel précédent et revenir à la valeur <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a> de départ.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.exception_reporter_filter\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">exception_reporter_filter</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.exception_reporter_filter\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette valeur sera utilisée à la place de <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_EXCEPTION_REPORTER_FILTER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_EXCEPTION_REPORTER_FILTER</span></code></a> pour la requête en cours. Voir <a class=\"reference internal\" href=\"/fr/3.2/howto/error-reporting/#custom-error-reports\"><span class=\"std std-ref\">Rapports d’erreur personnalisés</span></a> pour plus de détails.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.exception_reporter_class\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">exception_reporter_class</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.exception_reporter_class\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette valeur sera utilisée à la place de <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_EXCEPTION_REPORTER\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_EXCEPTION_REPORTER</span></code></a> pour la requête en cours. Voir <a class=\"reference internal\" href=\"/fr/3.2/howto/error-reporting/#custom-error-reports\"><span class=\"std std-ref\">Rapports d’erreur personnalisés</span></a> pour plus de détails.</p>\n</dd></dl>\n\n</section>\n<section id=\"attributes-set-by-middleware\">\n<h3>Attributs définis par l’intergiciel<a class=\"heading-anchor\" href=\"#attributes-set-by-middleware\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Certains intergiciels inclus dans les applications contribuées de Django définissent des attributs sur la requête. Si vous ne voyez pas un certain attribut dans la requête, vérifiez que la classe d’intergiciel correspondante figure bien dans <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.session\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">session</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.session\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Provenant de <a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SessionMiddleware</span></code></a>: un objet de type dictionnaire en lecture-écriture représentant la session en cours.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.site\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">site</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.site\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Provenant de <a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#django.contrib.sites.middleware.CurrentSiteMiddleware\" title=\"django.contrib.sites.middleware.CurrentSiteMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteMiddleware</span></code></a>: une instance de <a class=\"reference internal\" href=\"/fr/3.2/ref/contrib/sites/#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Site</span></code></a> ou de <a class=\"reference internal\" href=\"/fr/3.2/ref/contrib/sites/#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestSite</span></code></a> telle que renvoyée par <a class=\"reference internal\" href=\"/fr/3.2/ref/contrib/sites/#django.contrib.sites.shortcuts.get_current_site\" title=\"django.contrib.sites.shortcuts.get_current_site\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">get_current_site()</span></code></a> représentant le site en cours.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.user\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">user</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.user\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Provenant de <a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationMiddleware</span></code></a>: une instance de <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTH_USER_MODEL</span></code></a> représentant l’utilisateur actuellement connecté. Si aucun utilisateur n’est actuellement connecté, <code class=\"docutils literal notranslate\"><span class=\"pre\">user</span></code> contiendra une instance de <a class=\"reference internal\" href=\"/fr/3.2/ref/contrib/auth/#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AnonymousUser</span></code></a>. Vous pouvez les différencier par l’attribut <a class=\"reference internal\" href=\"/fr/3.2/ref/contrib/auth/#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_authenticated</span></code></a>, comme ceci :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_authenticated</span><span class=\"p\">:</span>\n    <span class=\"o\">...</span> <span class=\"c1\"># Do something for logged-in users.</span>\n<span class=\"k\">else</span><span class=\"p\">:</span>\n    <span class=\"o\">...</span> <span class=\"c1\"># Do something for anonymous users.</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_host\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_host</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_host\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie l’hôte d’origine de la requête en se basant sur les en-têtes <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_X_FORWARDED_HOST</span></code> (si <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-USE_X_FORWARDED_HOST\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_X_FORWARDED_HOST</span></code></a> est activé) et <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_HOST</span></code>, dans cet ordre. S’ils ne contiennent pas la valeur recherchée, la méthode utilise une combinaison de <code class=\"docutils literal notranslate\"><span class=\"pre\">SERVER_NAME</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">SERVER_PORT</span></code>, comme expliqué dans la <span class=\"target\" id=\"index-22\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-3333/\"><strong>PEP 3333</strong></a>.</p>\n<p>Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;127.0.0.1:8000&quot;</span></code></p>\n<p>Génère l’exception <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.exceptions.DisallowedHost</span></code> si l’hôte ne se trouve pas dans <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ALLOWED_HOSTS</span></code></a> ou si le nom de domaine n’est pas valide selon les <span class=\"target\" id=\"index-23\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc1034.html\"><strong>RFC 1034</strong></a>/<span class=\"target\" id=\"index-24\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc1035.html\"><strong>1035</strong></a>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>La méthode <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_host()</span></code></a> échoue lorsque l’hôte est derrière plusieurs serveurs mandataires. Une des solutions est d’utiliser un intergiciel pour réécrire les en-têtes de serveurs mandataires, comme dans l’exemple suivant :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MultipleProxyMiddleware</span><span class=\"p\">:</span>\n    <span class=\"n\">FORWARDED_FOR_FIELDS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"s1\">&#39;HTTP_X_FORWARDED_FOR&#39;</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;HTTP_X_FORWARDED_HOST&#39;</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;HTTP_X_FORWARDED_SERVER&#39;</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">get_response</span><span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span> <span class=\"o\">=</span> <span class=\"n\">get_response</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__call__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">        Rewrites the proxy headers so that only the most</span>\n<span class=\"sd\">        recent proxy is used.</span>\n<span class=\"sd\">        &quot;&quot;&quot;</span>\n        <span class=\"k\">for</span> <span class=\"n\">field</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">FORWARDED_FOR_FIELDS</span><span class=\"p\">:</span>\n            <span class=\"k\">if</span> <span class=\"n\">field</span> <span class=\"ow\">in</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">META</span><span class=\"p\">:</span>\n                <span class=\"k\">if</span> <span class=\"s1\">&#39;,&#39;</span> <span class=\"ow\">in</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">META</span><span class=\"p\">[</span><span class=\"n\">field</span><span class=\"p\">]:</span>\n                    <span class=\"n\">parts</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">META</span><span class=\"p\">[</span><span class=\"n\">field</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">split</span><span class=\"p\">(</span><span class=\"s1\">&#39;,&#39;</span><span class=\"p\">)</span>\n                    <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">META</span><span class=\"p\">[</span><span class=\"n\">field</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">parts</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">strip</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_response</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Cet intergiciel doit être positionné avant tout autre intergiciel se basant sur la valeur de <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_host()</span></code></a>, comme par exemple <a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#django.middleware.common.CommonMiddleware\" title=\"django.middleware.common.CommonMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CommonMiddleware</span></code></a> ou <a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware\" title=\"django.middleware.csrf.CsrfViewMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CsrfViewMiddleware</span></code></a>.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_port\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_port</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_port\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le port d’origine de la requête en se basant sur les informations des variables <code class=\"docutils literal notranslate\"><span class=\"pre\">META</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_X_FORWARDED_PORT</span></code> (si <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-USE_X_FORWARDED_PORT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_X_FORWARDED_PORT</span></code></a> est activé) et <code class=\"docutils literal notranslate\"><span class=\"pre\">SERVER_PORT</span></code>, dans cet ordre.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_full_path\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_full_path</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_full_path\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie le chemin <code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code>, intégrant les paramètres de requêtes, le cas échéant.</p>\n<p>Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/musique/groupes/les_beatles/?print=true&quot;</span></code></p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_full_path_info\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_full_path_info</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_full_path_info\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_full_path\" title=\"django.http.HttpRequest.get_full_path\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_full_path()</span></code></a>, mais utilise <a class=\"reference internal\" href=\"#django.http.HttpRequest.path_info\" title=\"django.http.HttpRequest.path_info\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">path_info</span></code></a> au lieu de <a class=\"reference internal\" href=\"#django.http.HttpRequest.path\" title=\"django.http.HttpRequest.path\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">path</span></code></a>.</p>\n<p>Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/minfo/music/bands/the_beatles/?print=true&quot;</span></code></p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.build_absolute_uri\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">build_absolute_uri</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">location</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.build_absolute_uri\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la forme absolue de l’URI <code class=\"docutils literal notranslate\"><span class=\"pre\">location</span></code>. Si aucun emplacement n’est indiqué, c’est l’emplacement provenant de <code class=\"docutils literal notranslate\"><span class=\"pre\">request.get_full_path()</span></code> qui est utilisé.</p>\n<p>Si l’emplacement est déjà une forme URI absolue, il ne sera pas touché. Sinon, l’URI absolu est construit en se basant sur les variables de serveur disponibles dans la requête. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">build_absolute_uri</span><span class=\"p\">()</span>\n<span class=\"go\">&#39;https://example.com/music/bands/the_beatles/?print=true&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">build_absolute_uri</span><span class=\"p\">(</span><span class=\"s1\">&#39;/bands/&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;https://example.com/bands/&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">build_absolute_uri</span><span class=\"p\">(</span><span class=\"s1\">&#39;https://example2.com/bands/&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;https://example2.com/bands/&#39;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Le mélange de HTTP et HTTPS sur le même site est découragé, ce qui fait que <a class=\"reference internal\" href=\"#django.http.HttpRequest.build_absolute_uri\" title=\"django.http.HttpRequest.build_absolute_uri\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">build_absolute_uri()</span></code></a> génère toujours une URI absolue avec le même protocole que la requête actuelle. Si vous avez besoin de rediriger les utilisateurs vers HTTPS, il est préférable de laisser votre serveur Web rediriger tout le trafic HTTP vers HTTPS.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_signed_cookie\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_signed_cookie</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">RAISE_ERROR</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">salt</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_age</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_signed_cookie\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une valeur de cookie d’un cookie signé ou génère une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.signing.BadSignature</span></code> si la signature n’est plus valable. Si vous fournissez le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code>, l’exception est supprimée et c’est cette valeur par défaut qui est renvoyée.</p>\n<p>Le paramètre facultatif <code class=\"docutils literal notranslate\"><span class=\"pre\">salt</span></code> peut être utilisé pour fournir une protection supplémentaire contre les attaques par force brute contre la clé secrète. S’il est présent, le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">max-age</span></code> sera comparé à l’horodatage signé lié à la valeur du cookie pour s’assurer que le cookie n’est pas plus ancien que <code class=\"docutils literal notranslate\"><span class=\"pre\">max_age</span></code> secondes.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;Tony&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">,</span> <span class=\"n\">salt</span><span class=\"o\">=</span><span class=\"s1\">&#39;name-salt&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;Tony&#39; # assuming cookie was set using the same salt</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;nonexistent-cookie&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">KeyError: &#39;nonexistent-cookie&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;nonexistent-cookie&#39;</span><span class=\"p\">,</span> <span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;cookie-that-was-tampered-with&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">BadSignature: ...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">,</span> <span class=\"n\">max_age</span><span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">SignatureExpired: Signature age 1677.3839159 &gt; 60 seconds</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">get_signed_cookie</span><span class=\"p\">(</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">,</span> <span class=\"kc\">False</span><span class=\"p\">,</span> <span class=\"n\">max_age</span><span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">)</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n<p>Voir <a class=\"reference internal\" href=\"/fr/3.2/topics/signing/\"><span class=\"doc\">Signature cryptographique</span></a> pour plus d’informations.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.is_secure\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">is_secure</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.is_secure\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si la requête est sécurisée, c’est-à-dire qu’elle a été opérée par HTTPS.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.accepts\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">accepts</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">mime_type</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.accepts\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.1\">\n<p class=\"version-note-title\">New in Django 3.1</p></aside>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept</span></code> de la requête correspond au paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">mime_type</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">accepts</span><span class=\"p\">(</span><span class=\"s1\">&#39;text/html&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>La plupart des navigateurs envoient par défaut <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept:</span> <span class=\"pre\">*/*</span></code>, ce qui fait que la valeur renvoyée sera <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> pour tous les types de contenu. Une définition explicite de l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept</span></code> dans les requêtes d’API peut être utile pour renvoyer un type de contenu différent pour ces consommateurs d’API bien précis. Consultez cet <a class=\"reference internal\" href=\"/fr/3.2/topics/class-based-views/generic-editing/#content-negotiation-example\"><span class=\"std std-ref\">Exemple de négociation de contenu</span></a> pour voir comment utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">accepts()</span></code> afin de renvoyer des contenus différents aux consommateurs d’une API.</p>\n<p>Si une réponse varie en fonction du contenu de l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Accept</span></code> et que vous utilisez une forme de cache comme l”<a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#module-django.middleware.cache\" title=\"django.middleware.cache: Middleware for the site-wide cache.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">intergiciel</span> <span class=\"pre\">de</span> <span class=\"pre\">cache</span></code></a> de Django, vous devriez décorer la vue avec <a class=\"reference internal\" href=\"/fr/3.2/topics/http/decorators/#django.views.decorators.vary.vary_on_headers\" title=\"django.views.decorators.vary.vary_on_headers\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">vary_on_headers('Accept')</span></code></a> pour que les réponses soient mises en cache de manière appropriée.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.is_ajax\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">is_ajax</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.is_ajax\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-deprecated\" data-version=\"3.1\">\n<p class=\"version-note-title\">Deprecated since Django 3.1</p><p><span class=\"versionmodified deprecated\">Obsolète depuis la version 3.1.</span></p>\n</aside>\n<p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si la requête a été faite par <code class=\"docutils literal notranslate\"><span class=\"pre\">XMLHttpRequest</span></code>, en se basant sur la présence de la chaîne <code class=\"docutils literal notranslate\"><span class=\"pre\">'XMLHttpRequest'</span></code> dans l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTP_X_REQUESTED_WITH</span></code>. La majorité des bibliothèques JavaScript modernes envoient cet en-tête. Si vous écrivez votre propre appel <code class=\"docutils literal notranslate\"><span class=\"pre\">XMLHttpRequest</span></code> (côté navigateur), vous devrez définir manuellement cet en-tête si vous souhaitez que <code class=\"docutils literal notranslate\"><span class=\"pre\">is_ajax()</span></code> fonctionne.</p>\n<p>Si une réponse varie selon qu’il s’agit d’une requête AJAX ou non et que vous utilisez une forme de cache comme l”<a class=\"reference internal\" href=\"/fr/3.2/ref/middleware/#module-django.middleware.cache\" title=\"django.middleware.cache: Middleware for the site-wide cache.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">intergiciel</span> <span class=\"pre\">de</span> <span class=\"pre\">cache</span></code></a> de Django, vous devriez décorer la vue avec <a class=\"reference internal\" href=\"/fr/3.2/topics/http/decorators/#django.views.decorators.vary.vary_on_headers\" title=\"django.views.decorators.vary.vary_on_headers\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">vary_on_headers('X-Requested-With')</span></code></a> pour que les réponses soient mises en cache de manière appropriée.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.read\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">read</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">size</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.read\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.readline\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">readline</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.readline\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.readlines\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">readlines</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.readlines\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.__iter__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpRequest.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__iter__</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.__iter__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Les méthodes implémentant une interface de type fichier pour la lecture d’une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code>. Ceci rend possible la consommation d’une requête entrante par un système de flux. Un cas typique serait le traitement d’un gros contenu XML avec un analyseur itératif sans devoir construire une arborescence XML complète en mémoire.</p>\n<p>Grâce à cette interface standard, une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> peut être directement transmise à un analyseur XML tel que <a class=\"reference external\" href=\"https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ElementTree</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">xml.etree.ElementTree</span><span class=\"w\"> </span><span class=\"k\">as</span><span class=\"w\"> </span><span class=\"nn\">ET</span>\n<span class=\"k\">for</span> <span class=\"n\">element</span> <span class=\"ow\">in</span> <span class=\"n\">ET</span><span class=\"o\">.</span><span class=\"n\">iterparse</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">process</span><span class=\"p\">(</span><span class=\"n\">element</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"querydict-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code><a class=\"heading-anchor\" href=\"#querydict-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">QueryDict</span></span><a class=\"heading-anchor\" href=\"#django.http.QueryDict\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Dans un objet <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>, les attributs <a class=\"reference internal\" href=\"#django.http.HttpRequest.GET\" title=\"django.http.HttpRequest.GET\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">GET</span></code></a> et <a class=\"reference internal\" href=\"#django.http.HttpRequest.POST\" title=\"django.http.HttpRequest.POST\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">POST</span></code></a> sont des instances de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.http.QueryDict</span></code>, une classe de type dictionnaire adaptée pour gérer plusieurs valeurs pour une même clé. C’est nécessaire parce que certains éléments de formulaire HTML, comme par exemple <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select</span> <span class=\"pre\">multiple&gt;</span></code>, transmettent plusieurs valeurs pour la même clé.</p>\n<p>Les objets <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">request.POST</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">request.GET</span></code> ne sont pas modifiables dans le cadre d’un cycle requête/réponse normal. Pour en obtenir une version modifiable, vous devez en faire une copie avec <a class=\"reference internal\" href=\"#django.http.QueryDict.copy\" title=\"django.http.QueryDict.copy\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">QueryDict.copy()</span></code></a>.</p>\n<section id=\"id1\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code></a> implémente toutes les méthodes de dictionnaire standard dans la mesure où il s’agit d’une sous-classe du type dictionnaire. Les exceptions sont relevées ci-dessous :</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__init__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__init__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query_string</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">mutable</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__init__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Crée une instance d’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> en fonction de <code class=\"docutils literal notranslate\"><span class=\"pre\">query_string</span></code>.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=2&amp;c=3&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QueryDict: {&#39;a&#39;: [&#39;1&#39;, &#39;2&#39;], &#39;c&#39;: [&#39;3&#39;]}&gt;</span>\n</code></pre></div>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">query_string</span></code> n’est pas transmis, le dictionnaire <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> résultant sera vide (il ne possédera aucune clé ni valeur).</p>\n<p>La plupart des objets <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> rencontrés, en particulier ceux correspondant à <code class=\"docutils literal notranslate\"><span class=\"pre\">request.POST</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">request.GET</span></code> ne sont pas modifiables. Si vous en créez un vous-même, vous pouvez le rendre modifiable en passant <code class=\"docutils literal notranslate\"><span class=\"pre\">mutable=True</span></code> à son constructeur <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code>.</p>\n<p>Les chaînes servant à définir les clés et les valeurs sont converties en chaînes <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code> à l’aide du codage <code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code>. Si ce dernier n’est pas défini, le codage par défaut est <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.fromkeys\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">classmethod</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">fromkeys</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">iterable</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">mutable</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.fromkeys\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Crée un nouveau <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> avec les clés de <code class=\"docutils literal notranslate\"><span class=\"pre\">iterable</span></code> et chaque valeur valant <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">QueryDict</span><span class=\"o\">.</span><span class=\"n\">fromkeys</span><span class=\"p\">([</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;a&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;b&#39;</span><span class=\"p\">],</span> <span class=\"n\">value</span><span class=\"o\">=</span><span class=\"s1\">&#39;val&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QueryDict: {&#39;a&#39;: [&#39;val&#39;, &#39;val&#39;], &#39;b&#39;: [&#39;val&#39;]}&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__getitem__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__getitem__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__getitem__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la valeur de la clé indiquée. Si la clé possède plus d’une valeur, elle renvoie la dernière valeur. Génère <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.datastructures.MultiValueDictKeyError</span></code> si la clé n’existe pas (cette exception héritant de l’exception Python standard <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#KeyError\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">KeyError</span></code></a>, vous pouvez toujours l’intercepter par <code class=\"docutils literal notranslate\"><span class=\"pre\">KeyError</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__setitem__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__setitem__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__setitem__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit la clé donnée à <code class=\"docutils literal notranslate\"><span class=\"pre\">[value]</span></code> (une liste dont l’unique élément est <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code>). Notez que tout comme les autres fonctions de dictionnaire qui ont des effets de bord, cette méthode ne peut être appelée que pour un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> modifiable (comme une instance créée par <a class=\"reference internal\" href=\"#django.http.QueryDict.copy\" title=\"django.http.QueryDict.copy\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">QueryDict.copy()</span></code></a>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__contains__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__contains__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__contains__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si la clé donnée est définie. Cela permet par exemple d’écrire <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span> <span class=\"pre\">&quot;foo&quot;</span> <span class=\"pre\">in</span> <span class=\"pre\">request.GET</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.get\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.get\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Utilise la même logique que <a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">__getitem__()</span></code></a>, avec un point d’entrée pour renvoyer une valeur par défaut si la clé n’existe pas.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.setdefault\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">setdefault</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.setdefault\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.setdefault\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dict.setdefault()</span></code></a>, sauf qu’en interne, c’est <a class=\"reference internal\" href=\"#django.http.QueryDict.__setitem__\" title=\"django.http.QueryDict.__setitem__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">__setitem__()</span></code></a> qui est utilisé.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.update\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">update</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other_dict</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.update\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Accepte soit un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code>, soit un dictionnaire. Identique à <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.update\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dict.update()</span></code></a>, sauf que le contenu est <em>ajouté</em> aux éléments actuels du dictionnaire au lieu de les remplacer. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&#39;</span><span class=\"p\">,</span> <span class=\"n\">mutable</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">({</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;2&#39;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">getlist</span><span class=\"p\">(</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">[&#39;1&#39;, &#39;2&#39;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"p\">[</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">]</span> <span class=\"c1\"># returns the last</span>\n<span class=\"go\">&#39;2&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.items\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">items</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.items\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.items\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dict.items()</span></code></a>, sauf qu’elle utilise la même logique de dernière valeur que <a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">__getitem__()</span></code></a> et renvoie un objet d’itération au lieu d’un objet vue. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=2&amp;a=3&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">items</span><span class=\"p\">())</span>\n<span class=\"go\">[(&#39;a&#39;, &#39;3&#39;)]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.values\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">values</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.values\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.values\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dict.values()</span></code></a>, sauf qu’elle utilise la même logique de dernière valeur que <a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">__getitem__()</span></code></a> et renvoie un objet d’itération au lieu d’un objet vue. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=2&amp;a=3&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">values</span><span class=\"p\">())</span>\n<span class=\"go\">[&#39;3&#39;]</span>\n</code></pre></div>\n</dd></dl>\n\n<p>De plus, <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code> possède les méthodes suivantes :</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.copy\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">copy</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.copy\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une copie de l’objet en utilisant <a class=\"reference external\" href=\"https://docs.python.org/3/library/copy.html#copy.deepcopy\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">copy.deepcopy()</span></code></a>. La copie est modifiable, même si l’objet de départ ne l’est pas.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.getlist\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">getlist</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.getlist\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une liste des données correspondant à la clé demandée. Renvoie une liste vide si la clé n’existe pas et que la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>. Elle renvoie dans tous les cas une liste, sauf si la valeur par défaut fournie n’est pas une liste.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.setlist\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">setlist</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">list_</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.setlist\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit la clé indiquée à <code class=\"docutils literal notranslate\"><span class=\"pre\">list_</span></code> (au contraire de <a class=\"reference internal\" href=\"#django.http.QueryDict.__setitem__\" title=\"django.http.QueryDict.__setitem__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">__setitem__()</span></code></a>).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.appendlist\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">appendlist</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">item</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.appendlist\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute un élément à la liste interne associée à la clé.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.setlistdefault\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">setlistdefault</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default_list</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.setlistdefault\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference internal\" href=\"#django.http.QueryDict.setdefault\" title=\"django.http.QueryDict.setdefault\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">setdefault()</span></code></a>, sauf qu’elle accepte une liste de valeurs au lieu d’une valeur unique.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.lists\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">lists</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.lists\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <a class=\"reference internal\" href=\"#django.http.QueryDict.items\" title=\"django.http.QueryDict.items\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">items()</span></code></a>, sauf qu’elle inclut toutes les valeurs, sous forme de liste, pour chaque élément du dictionnaire. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=2&amp;a=3&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">lists</span><span class=\"p\">()</span>\n<span class=\"go\">[(&#39;a&#39;, [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;])]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.pop\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">pop</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.pop\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une liste de valeurs correspondant à la clé donnée et les enlève du dictionnaire. Génère <code class=\"docutils literal notranslate\"><span class=\"pre\">KeyError</span></code> si la clé n’existe pas. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=2&amp;a=3&#39;</span><span class=\"p\">,</span> <span class=\"n\">mutable</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">pop</span><span class=\"p\">(</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">[&#39;1&#39;, &#39;2&#39;, &#39;3&#39;]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.popitem\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">popitem</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.popitem\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Enlève un élément arbitraire du dictionnaire (puisque ce dernier n’a pas de notion de tri) et renvoie un tuple à deux valeurs contenant la clé ainsi qu’une liste de toutes les valeurs de cette clé. Génère <code class=\"docutils literal notranslate\"><span class=\"pre\">KeyError</span></code> si le dictionnaire concerné est vide. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=2&amp;a=3&#39;</span><span class=\"p\">,</span> <span class=\"n\">mutable</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">popitem</span><span class=\"p\">()</span>\n<span class=\"go\">(&#39;a&#39;, [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;])</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.dict\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">dict</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.dict\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une représentation <code class=\"docutils literal notranslate\"><span class=\"pre\">dict</span></code> de <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code>. Pour chaque paire clé/liste dans <code class=\"docutils literal notranslate\"><span class=\"pre\">QueryDict</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">dict</span></code> comportera la paire clé/élément ou élément est un élément de la liste en suivant la même logique que <a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">QueryDict.__getitem__()</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=1&amp;a=3&amp;a=5&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">dict</span><span class=\"p\">()</span>\n<span class=\"go\">{&#39;a&#39;: &#39;5&#39;}</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.urlencode\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">QueryDict.</span></span><span class=\"sig-name descname\"><span class=\"pre\">urlencode</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">safe</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.urlencode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une représentation textuelle des données au format « chaîne de requête ». Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"s1\">&#39;a=2&amp;b=3&amp;b=5&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">urlencode</span><span class=\"p\">()</span>\n<span class=\"go\">&#39;a=2&amp;b=3&amp;b=5&#39;</span>\n</code></pre></div>\n<p>Utilisez le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">safe</span></code> pour transmettre des caractères qui n’ont pas besoin d’être codés. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span> <span class=\"o\">=</span> <span class=\"n\">QueryDict</span><span class=\"p\">(</span><span class=\"n\">mutable</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"p\">[</span><span class=\"s1\">&#39;next&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;/a&amp;b/&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">q</span><span class=\"o\">.</span><span class=\"n\">urlencode</span><span class=\"p\">(</span><span class=\"n\">safe</span><span class=\"o\">=</span><span class=\"s1\">&#39;/&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;next=/a%26b/&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"httpresponse-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code><a class=\"heading-anchor\" href=\"#httpresponse-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponse</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Contrairement aux objets <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> qui sont automatiquement créés par Django, les objets <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> sont de votre responsabilité. Chaque vue que vous écrivez est responsable d’instancier, de remplir et de renvoyer un objet <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>.</p>\n<p>La classe <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> se trouve dans le module <a class=\"reference internal\" href=\"#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.http</span></code></a>.</p>\n<section id=\"usage\">\n<h3>Utilisation<a class=\"heading-anchor\" href=\"#usage\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"passing-strings\">\n<h4>Transmission de chaînes<a class=\"heading-anchor\" href=\"#passing-strings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>L’utilisation typique est de transmettre le contenu de la page comme une chaîne, une chaîne d’octets ou un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">memoryview</span></code></a>, au constructeur de <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s2\">&quot;Here&#39;s the text of the Web page.&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s2\">&quot;Text only, please.&quot;</span><span class=\"p\">,</span> <span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;text/plain&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"sa\">b</span><span class=\"s1\">&#39;Bytestrings are also accepted.&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"nb\">memoryview</span><span class=\"p\">(</span><span class=\"sa\">b</span><span class=\"s1\">&#39;Memoryview as well.&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Mais si vous souhaitez ajouter du contenu de manière incrémentale, vous pouvez utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">response</span></code> comme un objet de type fichier :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;p&gt;Here&#39;s the text of the Web page.&lt;/p&gt;&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;p&gt;Here&#39;s another paragraph.&lt;/p&gt;&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"passing-iterators\">\n<h4>Transmission d’itérateurs<a class=\"heading-anchor\" href=\"#passing-iterators\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pour terminer, vous pouvez transmettre un itérateur au lieu d’une chaîne à <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code> consomme immédiatement l’itérateur, stocke son contenu sous forme de chaîne et ne s’en occupe plus. Les objets ayant une méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">close()</span></code> tels que les fichiers et les générateurs sont immédiatement fermés.</p>\n<p>Si vous avez besoin que la réponse soit transmise sous forme de flux de l’itérateur vers le client, vous devez utilisez plutôt la classe <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code></a>.</p>\n</section>\n<section id=\"setting-header-fields\">\n<span id=\"id2\"></span><h4>Définition de champs d’en-tête<a class=\"heading-anchor\" href=\"#setting-header-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pour définir ou enlever un champ d’en-tête de la réponse, utilisez <a class=\"reference internal\" href=\"#django.http.HttpResponse.headers\" title=\"django.http.HttpResponse.headers\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpResponse.headers</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"p\">[</span><span class=\"s1\">&#39;Age&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mi\">120</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> <span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">headers</span><span class=\"p\">[</span><span class=\"s1\">&#39;Age&#39;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Il est aussi possible de manipuler les en-têtes en traitant la réponse comme un dictionnaire</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span><span class=\"p\">[</span><span class=\"s1\">&#39;Age&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mi\">120</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> <span class=\"n\">response</span><span class=\"p\">[</span><span class=\"s1\">&#39;Age&#39;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>C’est une autre manière d’accéder à <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse.headers</span></code>, c’était l’interface d’origine offerte par <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code>.</p>\n<p>Avec cette interface et contrairement à un dictionnaire, <code class=\"docutils literal notranslate\"><span class=\"pre\">del</span></code> ne génère pas d’exception <code class=\"docutils literal notranslate\"><span class=\"pre\">KeyError</span></code> si le champ d’en-tête n’existe pas.</p>\n<p>Vous pouvez aussi définir des en-têtes lors de l’instanciation</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;Age&#39;</span><span class=\"p\">:</span> <span class=\"mi\">120</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Pour définir les champs d’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Cache-Control</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">Vary</span></code>, il est recommandé d’utiliser les méthodes <a class=\"reference internal\" href=\"/fr/3.2/ref/utils/#django.utils.cache.patch_cache_control\" title=\"django.utils.cache.patch_cache_control\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">patch_cache_control()</span></code></a> et <a class=\"reference internal\" href=\"/fr/3.2/ref/utils/#django.utils.cache.patch_vary_headers\" title=\"django.utils.cache.patch_vary_headers\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">patch_vary_headers()</span></code></a> provenant de <a class=\"reference internal\" href=\"/fr/3.2/ref/utils/#module-django.utils.cache\" title=\"django.utils.cache: Helper functions for controlling caching.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.utils.cache</span></code></a>, car ces champs peuvent contenir plusieurs valeurs séparées par des virgules. Les méthodes « patch » garantissent que les autres valeurs, par exemple celles ajoutées par un intergiciel, ne sont pas écrasées.</p>\n<p>Les champs d’en-tête HTTP ne peuvent contenir de sauts de ligne. Si vous essayez de définir un contenu de champ d’en-tête avec un caractère de saut de ligne (CR ou LF), une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">BadHeaderError</span></code> sera générée.</p>\n<aside class=\"version-note version-changed\" data-version=\"3.2\">\n<p class=\"version-note-title\">Changed in Django 3.2</p><p>L’interface <a class=\"reference internal\" href=\"#django.http.HttpResponse.headers\" title=\"django.http.HttpResponse.headers\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpResponse.headers</span></code></a> a été ajoutée.</p>\n<p>La possibilité de définir des en-têtes lors de l’instanciation a été ajoutée.</p>\n</aside>\n</section>\n<section id=\"telling-the-browser-to-treat-the-response-as-a-file-attachment\">\n<h4>Réponse indiquant au navigateur de la traiter comme fichier à télécharger<a class=\"heading-anchor\" href=\"#telling-the-browser-to-treat-the-response-as-a-file-attachment\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pour indiquer au navigateur qu’une réponse doit être traitée comme un fichier à télécharger, définissez les en-têtes <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Disposition</span></code>. Par exemple, voici comment vous pouvez renvoyer une feuille de calcul Microsoft Excel :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"n\">my_data</span><span class=\"p\">,</span> <span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s1\">&#39;Content-Type&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;application/vnd.ms-excel&#39;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s1\">&#39;Content-Disposition&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;attachment; filename=&quot;foo.xls&quot;&#39;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Il n’y a rien de spécifique à Django à propos de l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Disposition</span></code>, mais cette syntaxe est vite oubliée, c’est pourquoi nous l’avons incluse ici.</p>\n</section>\n</section>\n<section id=\"id3\">\n<h3>Attributs<a class=\"heading-anchor\" href=\"#id3\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.content\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">content</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.content\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne d’octets représentant le contenu, codée à partir d’une chaîne, si nécessaire.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.headers\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">headers</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.headers\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"3.2\">\n<p class=\"version-note-title\">New in Django 3.2</p></aside>\n<p>Un objet similaire à un dictionnaire, insensible à la casse, qui offre une interface vers tous les en-têtes HTTP de la réponse. Voir <a class=\"reference internal\" href=\"#setting-header-fields\"><span class=\"std std-ref\">Définition de champs d’en-tête</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.charset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">charset</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.charset\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une chaîne indiquant le jeu de caractères dans lequel la réponse sera codée. Si ce paramètre n’est pas indiqué au moment de l’instanciation de <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code>, il sera extrait à partir de <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code>, et si ce n’est pas fructueux, c’est le réglage <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a> qui est utilisé.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.status_code\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">status_code</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.status_code\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le <span class=\"target\" id=\"index-25\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-6\"><strong>code de statut HTTP</strong></a> de la réponse.</p>\n<p>Tant que <a class=\"reference internal\" href=\"#django.http.HttpResponse.reason_phrase\" title=\"django.http.HttpResponse.reason_phrase\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">reason_phrase</span></code></a> n’est pas explicitement défini, la modification de la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">status_code</span></code> en dehors du constructeur modifie également la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">reason_phrase</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.reason_phrase\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">reason_phrase</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.reason_phrase\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La phrase de raison HTTP de la réponse. Elle utilise les phrases de raison par défaut du <span class=\"target\" id=\"index-26\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-6.1\"><strong>standard HTTP</strong></a>.</p>\n<p>Tant que <code class=\"docutils literal notranslate\"><span class=\"pre\">reason_phrase</span></code> n’est pas explicitement défini, il est déterminé par la valeur de <a class=\"reference internal\" href=\"#django.http.HttpResponse.status_code\" title=\"django.http.HttpResponse.status_code\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">status_code</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.streaming\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">streaming</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.streaming\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cet attribut est toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>Cet attribut existe pour que des intergiciels puissent traiter les réponses en flux différemment des réponse normales.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.closed\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">closed</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.closed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> si la réponse a été fermée.</p>\n</dd></dl>\n\n</section>\n<section id=\"id4\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#id4\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__init__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__init__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">b''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content_type</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">status</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">200</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reason</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">charset</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">headers</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__init__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Instancie un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code> avec les contenu, type de contenu et en-têtes de page indiqués.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content</span></code> et le plus souvent un itérateur, une chaîne d’octets, un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">memoryview</span></code></a> ou une chaîne. Les autres types sont convertis en chaîne d’octets en codant leur représentation textuelle. Les itérateurs doivent renvoyer des chaînes ou chaînes d’octets et celles-ci seront concaténées pour former le contenu de la réponse.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> est le type MIME pouvant être facultativement complété par un codage de jeu de caractères et sert à remplir l’en-tête HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code>. Quand il n’est pas fourni, ce paramètre est formé par <code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code> et <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a>, par défaut : <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;text/html;</span> <span class=\"pre\">charset=utf-8&quot;</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">status</span></code> est le <span class=\"target\" id=\"index-27\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-6\"><strong>code d’état HTTP</strong></a> de la réponse. Vous pouvez utiliser la classe <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.html#http.HTTPStatus\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">http.HTTPStatus</span></code></a> de Python pour attribuer des alias signifiants, tel que <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTPStatus.NO_CONTENT</span></code>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">reason</span></code> est la phrase de réponse HTTP. Quand elle n’est pas indiquée, une phrase par défaut est utilisée.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">charset</span></code> est le jeu de caractères dans lequel la réponse sera codée. S’il n’est pas fourni, il sera extrait à partir de <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code>, et si ce n’est pas fructueux, c’est le réglage <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_CHARSET</span></code></a> qui est utilisé.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code> est un <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> d’en-têtes HTTP pour la réponse.</p>\n<aside class=\"version-note version-changed\" data-version=\"3.2\">\n<p class=\"version-note-title\">Changed in Django 3.2</p><p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code> a été ajouté.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__setitem__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__setitem__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">header</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__setitem__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit le nom d’en-tête donné à la valeur donnée. <code class=\"docutils literal notranslate\"><span class=\"pre\">header</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">value</span></code> doivent tous les deux être des chaînes.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__delitem__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__delitem__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">header</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__delitem__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Supprime l’en-tête nommé. Échoue silencieusement si l’en-tête n’existe pas. Insensible à la casse.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__getitem__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">__getitem__</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">header</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__getitem__\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la valeur correspondant au nom d’en-tête nommé. Insensible à la casse.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.get\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">header</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">alternate</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.get\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la valeur correspondant au nom d’en-tête nommé, ou <code class=\"docutils literal notranslate\"><span class=\"pre\">alternate</span></code> si l’en-tête n’existe pas.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.has_header\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_header</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">header</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.has_header\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> sur la base d’une recherche insensible à la casse d’un en-tête ayant le nom indiqué.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.items\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">items</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.items\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se comporte comme <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.items\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dict.items()</span></code></a> pour les en-têtes HTTP de la réponse.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.setdefault\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">setdefault</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">header</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.setdefault\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit un en-tête pour autant qu’il ne soit pas déjà présent.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.set_cookie\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">set_cookie</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_age</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expires</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'/'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">domain</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">secure</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">httponly</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">samesite</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.set_cookie\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit un cookie. Les paramètres sont les mêmes que pour l’objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Morsel</span></code></a> de la bibliothèque Python standard.</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">max_age</span></code> doit être un nombre entier de secondes ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> (par défaut) si le cookie ne doit durer que le temps de la session du navigateur client. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">expires</span></code> n’est pas fourni, il est calculé.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">expires</span></code> doit être soit une chaîne au format <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;Wdy,</span> <span class=\"pre\">DD-Mon-YY</span> <span class=\"pre\">HH:MM:SS</span> <span class=\"pre\">GMT&quot;</span></code>, soit un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code> en UTC. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">expires</span></code> est un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>, la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">max_age</span></code> est calculée.</p></li>\n<li><p>Utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> si vous souhaitez définir un cookie inter-domaine. Par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">domain=&quot;example.com&quot;</span></code> définit un cookie lisible par les domaines www.example.com, blog.example.com, etc. Sinon, un cookie est seulement accessible par le domaine qui l’a définit.</p></li>\n<li><p>Indiquez <code class=\"docutils literal notranslate\"><span class=\"pre\">secure=True</span></code> si vous voulez que le cookie ne soit envoyé au serveur que quand la requête est établie par une connexion <code class=\"docutils literal notranslate\"><span class=\"pre\">https</span></code>.</p></li>\n<li><p>Utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">httponly=True</span></code> si vous souhaitez empêcher du code JavaScript client de pouvoir accéder au cookie.</p>\n<p><a class=\"reference external\" href=\"https://owasp.org/www-community/HttpOnly\">HttpOnly</a> est un drapeau inclus dans un en-tête de réponse HTTP Set-Cookie. Il fait partie du standard <span class=\"target\" id=\"index-28\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc6265.html#section-4.1.2.6\"><strong>RFC 6265</strong></a> pour les cookies, et c’est un moyen utile de réduire le risque d’un script côté client accédant aux données d’un cookie protégé.</p>\n</li>\n<li><p>Utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">samesite='Strict'</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">samesite='Lax'</span></code> pour indiquer au navigateur de ne pas envoyer ce cookie lors d’une requête vers une origine différente. <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\">SameSite</a> n’est pas pris en charge par tous les navigateurs, ce n’est donc pas une solution de remplacement pour la protection CSRF de Django, mais plutôt une mesure défensive de consolidation.</p>\n<p>Utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">samesite='None'</span></code> (chaîne) pour indiquer explicitement que ce cookie doit être envoyé avec toutes les requêtes du même site et inter-sites.</p>\n</li>\n</ul>\n<aside class=\"version-note version-changed\" data-version=\"3.1\">\n<p class=\"version-note-title\">Changed in Django 3.1</p><p>L’utilisation de <code class=\"docutils literal notranslate\"><span class=\"pre\">samesite='None'</span></code> (chaîne) a été autorisé.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>La <span class=\"target\" id=\"index-29\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc6265.html#section-6.1\"><strong>RFC 6265</strong></a> précise que les agents utilisateurs doivent prendre en charge les cookies d’au moins 4096 octets. Pour beaucoup de navigateurs, c’est aussi la taille maximale. Django ne génère pas d’exception lors de la création d’un cookie de plus de 4096 octets, mais beaucoup de navigateurs ne vont pas stocker le cookie correctement.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.set_signed_cookie\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">set_signed_cookie</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">salt</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_age</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expires</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'/'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">domain</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">secure</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">httponly</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">samesite</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.set_signed_cookie\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <a class=\"reference internal\" href=\"#django.http.HttpResponse.set_cookie\" title=\"django.http.HttpResponse.set_cookie\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">set_cookie()</span></code></a>, mais le cookie est <a class=\"reference internal\" href=\"/fr/3.2/topics/signing/\"><span class=\"doc\">signé par chiffrement</span></a> avant d’être défini. À utiliser en combinaison avec <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_signed_cookie\" title=\"django.http.HttpRequest.get_signed_cookie\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">HttpRequest.get_signed_cookie()</span></code></a>. Vous pouvez utiliser le paramètre facultatif <code class=\"docutils literal notranslate\"><span class=\"pre\">salt</span></code> pour renforcer la clé, mais vous ne devrez alors pas oublier de le transmettre aussi à l’appel <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_signed_cookie\" title=\"django.http.HttpRequest.get_signed_cookie\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">HttpRequest.get_signed_cookie()</span></code></a> correspondant.</p>\n<aside class=\"version-note version-changed\" data-version=\"3.1\">\n<p class=\"version-note-title\">Changed in Django 3.1</p><p>L’utilisation de <code class=\"docutils literal notranslate\"><span class=\"pre\">samesite='None'</span></code> (chaîne) a été autorisé.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.delete_cookie\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_cookie</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">key</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'/'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">domain</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">samesite</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.delete_cookie\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Supprime le cookie correspondant à la clé nommée. Échoue silencieusement si la clé n’existe pas.</p>\n<p>En raison du fonctionnement des cookies, <code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">domain</span></code> doivent contenir les mêmes valeurs qui ont été utilisées pour <code class=\"docutils literal notranslate\"><span class=\"pre\">set_cookie()</span></code> – sinon, le cookie pourrait ne pas être supprimé.</p>\n<aside class=\"version-note version-changed\" data-version=\"2.2.15\">\n<p class=\"version-note-title\">Changed in Django 2.2.15</p><p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">samesite</span></code> a été ajouté.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.close\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">close</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.close\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette méthode est appelée à la fin de la requête directement par le serveur WSGI.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.write\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">write</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.write\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en objet de type fichier.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.flush\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">flush</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.flush\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en objet de type fichier.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.tell\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">tell</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.tell\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en objet de type fichier.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.getvalue\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">getvalue</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.getvalue\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie la valeur de <a class=\"reference internal\" href=\"#django.http.HttpResponse.content\" title=\"django.http.HttpResponse.content\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpResponse.content</span></code></a>. Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en un objet de type flux.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.readable\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">readable</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.readable\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en un objet de type flux.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.seekable\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">seekable</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.seekable\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en un objet de type flux.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.writable\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">writable</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.writable\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en un objet de type flux.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.writelines\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">HttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">writelines</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">lines</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.writelines\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Écrit une liste de lignes dans la réponse. Les séparateurs de ligne ne sont pas ajoutés. Cette méthode transforme une instance <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> en un objet de type flux.</p>\n</dd></dl>\n\n</section>\n<section id=\"httpresponse-subclasses\">\n<span id=\"ref-httpresponse-subclasses\"></span><h3>Sous-classes de <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code><a class=\"heading-anchor\" href=\"#httpresponse-subclasses\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django inclut un certain nombre de sous-classes de <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code> gérant différents types de réponses HTTP. Comme <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code>, ces sous-classes se trouvent dans <a class=\"reference internal\" href=\"#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.http</span></code></a>.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseRedirect\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseRedirect</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseRedirect\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le premier paramètre du constructeur est obligatoire, le chemin vers lequel la redirection doit se faire. Il peut s’agir d’une URL pleinement qualifiée (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">'https://www.yahoo.com/search/'</span></code>), un chemin absolu sans domaine (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">'/search/'</span></code>) ou même un chemin relatif (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">'search/'</span></code>). Dans ce dernier cas, le navigateur du client reconstruira lui-même l’URL complète en fonction du chemin actuel. Voir <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> pour les autres paramètres facultatifs du constructeur. Notez que cette classe renvoie un code de statut HTTP 302.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseRedirect.url\">\n<span class=\"sig-name descname\"><span class=\"pre\">url</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseRedirect.url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cet attribut en lecture seule représente l’URL vers laquelle la réponse va rediriger (équivalent à l’en-tête de réponse <code class=\"docutils literal notranslate\"><span class=\"pre\">Location</span></code>).</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponsePermanentRedirect\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponsePermanentRedirect</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponsePermanentRedirect\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <a class=\"reference internal\" href=\"#django.http.HttpResponseRedirect\" title=\"django.http.HttpResponseRedirect\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponseRedirect</span></code></a>, mais renvoie une redirection permanente (code de statut HTTP 301) au lieu d’un redirection « found » (code de statut 302).</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseNotModified\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseNotModified</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseNotModified\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le constructeur n’accepte aucun paramètre et cette réponse n’accepte aucun contenu. Cette classe permet d’indiquer qu’une page n’a pas été modifiée depuis la dernière requête de l’utilisateur (code de statut 304).</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseBadRequest\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseBadRequest</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseBadRequest\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se comporte comme <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mais renvoie un code de statut 400.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseNotFound\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseNotFound</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseNotFound\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se comporte comme <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mais renvoie un code de statut 404.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseForbidden\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseForbidden</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseForbidden\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se comporte comme <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mais renvoie un code de statut 403.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseNotAllowed\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseNotAllowed</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseNotAllowed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Comme <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mais renvoie un code de statut 405. Le premier paramètre du constructeur est obligatoire : une liste de méthodes autorisées (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">['GET',</span> <span class=\"pre\">'POST']</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseGone\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseGone</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseGone\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se comporte comme <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mais renvoie un code de statut 410.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseServerError\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HttpResponseServerError</span></span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseServerError\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se comporte comme <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> mais renvoie un code de statut 500.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Si une sous-classe personnalisée de <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> implémente une méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">render</span></code>, Django considère qu’elle émule une réponse <a class=\"reference internal\" href=\"/fr/3.2/ref/template-response/#django.template.response.SimpleTemplateResponse\" title=\"django.template.response.SimpleTemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code></a>, et la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">render</span></code> doit elle-même renvoyer un objet réponse valide.</p>\n</aside>\n<section id=\"custom-response-classes\">\n<h4>Classes de réponses personnalisées<a class=\"heading-anchor\" href=\"#custom-response-classes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Si vous rencontrez le besoin d’utiliser une classe de réponse que Django ne fournit pas, vous pouvez la créer à l’aide de <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.html#http.HTTPStatus\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">http.HTTPStatus</span></code></a>. Par exemple</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HTTPStatus</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HttpResponseNoContent</span><span class=\"p\">(</span><span class=\"n\">HttpResponse</span><span class=\"p\">):</span>\n    <span class=\"n\">status_code</span> <span class=\"o\">=</span> <span class=\"n\">HTTPStatus</span><span class=\"o\">.</span><span class=\"n\">NO_CONTENT</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"jsonresponse-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">JsonResponse</span></code><a class=\"heading-anchor\" href=\"#jsonresponse-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.JsonResponse\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">JsonResponse</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoder</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">DjangoJSONEncoder</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">safe</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">json_dumps_params</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.JsonResponse\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une sous-classe de <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> aidant à la création d’une réponse codée en JSON. Elle hérite de la plupart du comportement de sa classe parente avec quelques différences :</p>\n<p>La valeur par défaut de son en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code> est <em class=\"mimetype\">application/json</em>.</p>\n<p>Le premier paramètre, <code class=\"docutils literal notranslate\"><span class=\"pre\">data</span></code>, doit être une instance de <code class=\"docutils literal notranslate\"><span class=\"pre\">dict</span></code>. Si le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">safe</span></code> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> (voir ci-dessous), il peut s’agir de n’importe quel objet sérialisable en JSON.</p>\n<p>Le codeur <code class=\"docutils literal notranslate\"><span class=\"pre\">encoder</span></code> qui contient par défaut <a class=\"reference internal\" href=\"/fr/3.2/topics/serialization/#django.core.serializers.json.DjangoJSONEncoder\" title=\"django.core.serializers.json.DjangoJSONEncoder\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.serializers.json.DjangoJSONEncoder</span></code></a> est utilisé pour sérialiser les données. Voir <a class=\"reference internal\" href=\"/fr/3.2/topics/serialization/#serialization-formats-json\"><span class=\"std std-ref\">sérialisation JSON</span></a> pour plus de détails sur ce sérialiseur.</p>\n<p>Le paramètre booléen <code class=\"docutils literal notranslate\"><span class=\"pre\">safe</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> par défaut. S’il est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, n’importe quel objet peut être soumis à la sérialisation (sinon seules les instances de <code class=\"docutils literal notranslate\"><span class=\"pre\">dict</span></code> sont autorisées). Si <code class=\"docutils literal notranslate\"><span class=\"pre\">safe</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> et qu’un objet qui n’est pas un dictionnaire est transmis comme premier paramètre, une exception <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#TypeError\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">TypeError</span></code></a> est générée.</p>\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">json_dumps_params</span></code> est un dictionnaire de paramètres nommés à transmettre à l’appel <code class=\"docutils literal notranslate\"><span class=\"pre\">json.dumps()</span></code> utilisé pour générer la réponse.</p>\n</dd></dl>\n\n<section id=\"id5\">\n<h3>Utilisation<a class=\"heading-anchor\" href=\"#id5\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Voici à quoi peut ressembler une utilisation typique :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">JsonResponse</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">JsonResponse</span><span class=\"p\">({</span><span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;bar&#39;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">content</span>\n<span class=\"go\">b&#39;{&quot;foo&quot;: &quot;bar&quot;}&#39;</span>\n</code></pre></div>\n<section id=\"serializing-non-dictionary-objects\">\n<h4>Sérialisation d’objets non dictionnaires<a class=\"heading-anchor\" href=\"#serializing-non-dictionary-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pour pouvoir sérialiser des objets autres que des dictionnaires, il faut définir le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">safe</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">JsonResponse</span><span class=\"p\">([</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">],</span> <span class=\"n\">safe</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Dans le cas où <code class=\"docutils literal notranslate\"><span class=\"pre\">safe=False</span></code> n’est pas transmis, une exception <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#TypeError\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">TypeError</span></code></a> est produite.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Avant la 5e édition de ECMAScript `_, il était possible de corrompre le constructeur ``Array` de JavaScript. C’est pour cette raison que Django ne permet pas de transmettre par défaut des objets non dictionnaires au constructeur <a class=\"reference internal\" href=\"#django.http.JsonResponse\" title=\"django.http.JsonResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">JsonResponse</span></code></a>. Cependant, la plupart des navigateurs modernes implémentent EcmaScript 5, ce qui élimine ce vecteur d’attaque. Il est donc possible de désactiver cette mesure de sécurité.</p>\n</aside>\n</section>\n<section id=\"changing-the-default-json-encoder\">\n<h4>Modification du codeur JSON par défaut<a class=\"heading-anchor\" href=\"#changing-the-default-json-encoder\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Si vous avez besoin d’utiliser une classe de codage JSON différente, vous pouvez transmettre le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">encoder</span></code> à la méthode du constructeur :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">JsonResponse</span><span class=\"p\">(</span><span class=\"n\">data</span><span class=\"p\">,</span> <span class=\"n\">encoder</span><span class=\"o\">=</span><span class=\"n\">MyJSONEncoder</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"streaminghttpresponse-objects\">\n<span id=\"httpresponse-streaming\"></span><h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code><a class=\"heading-anchor\" href=\"#streaminghttpresponse-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">StreamingHttpResponse</span></span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>La classe <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code></a> est utilisée pour diffuser une réponse en flux de Django vers le navigateur. Ceci peut être utilisé pour générer une réponse qui prend beaucoup de temps ou qui utilise beaucoup de mémoire. Par exemple, c’est utile pour <a class=\"reference internal\" href=\"/fr/3.2/howto/outputting-csv/#streaming-csv-files\"><span class=\"std std-ref\">générer de gros fichiers CSV</span></a>.</p>\n<aside class=\"admonition-performance-considerations admonition\">\n<p class=\"admonition-title\">Considérations sur la performance</p>\n<p>Django est conçu pour traiter des requêtes de courte durée. Les réponses en flux lient un processus de travail pour toute la durée de la réponse. Cela peut amener à des pertes de performance.</p>\n<p>Généralement, les tâches lourdes devraient être exécutées en dehors du cycle requête-réponse, plutôt que de faire appel à une réponse en flux.</p>\n</aside>\n<p>La classe <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code></a> n’hérite pas de <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a>, parce que son API est légèrement différente. Cependant, elle est presque identique, à l’exception des différences notables suivantes :</p>\n<ul class=\"simple\">\n<li><p>Elle doit recevoir un itérateur qui produit des chaînes d’octets comme contenu.</p></li>\n<li><p>Le seul moyen d’accéder à son contenu est d’itérer sur l’objet réponse lui-même. Cela ne devrait se faire qu’au moment de renvoyer la réponse au client.</p></li>\n<li><p>Elle ne possède pas d’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">content</span></code>. À la place, elle possède l’attribut <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.streaming_content\" title=\"django.http.StreamingHttpResponse.streaming_content\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">streaming_content</span></code></a>.</p></li>\n<li><p>Vous ne pouvez pas utiliser les méthodes de type fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">tell()</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">write()</span></code>. Si vous le faites, vous obtiendrez une exception.</p></li>\n</ul>\n<p><a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code></a> ne devrait être utilisée que dans les situations qui exigent vraiment que l’accès par itération au contenu global ne se fasse qu’au moment de transférer les données au client. Comme le contenu n’est pas directement accessible, beaucoup d’intergiciels ne peuvent pas fonctionner correctement. Par exemple, les en-têtes <code class=\"docutils literal notranslate\"><span class=\"pre\">ETag</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Length</span></code> ne peuvent pas être générés pour les réponses en flux.</p>\n<section id=\"id6\">\n<h3>Attributs<a class=\"heading-anchor\" href=\"#id6\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.streaming_content\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">StreamingHttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">streaming_content</span></span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.streaming_content\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un itérateur de contenu de la réponse, codé en chaîne d’octets en fonction de <a class=\"reference internal\" href=\"#django.http.HttpResponse.charset\" title=\"django.http.HttpResponse.charset\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">HttpResponse.charset</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.status_code\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">StreamingHttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">status_code</span></span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.status_code\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le <span class=\"target\" id=\"index-30\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-6\"><strong>code de statut HTTP</strong></a> de la réponse.</p>\n<p>Tant que <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.reason_phrase\" title=\"django.http.StreamingHttpResponse.reason_phrase\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">reason_phrase</span></code></a> n’est pas explicitement défini, la modification de la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">status_code</span></code> en dehors du constructeur modifie également la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">reason_phrase</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.reason_phrase\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">StreamingHttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">reason_phrase</span></span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.reason_phrase\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La phrase de raison HTTP de la réponse. Elle utilise les phrases de raison par défaut du <span class=\"target\" id=\"index-31\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7231.html#section-6.1\"><strong>standard HTTP</strong></a>.</p>\n<p>Tant que <code class=\"docutils literal notranslate\"><span class=\"pre\">reason_phrase</span></code> n’est pas explicitement défini, il est déterminé par la valeur de <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.status_code\" title=\"django.http.StreamingHttpResponse.status_code\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">status_code</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.streaming\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">StreamingHttpResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">streaming</span></span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.streaming\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cet attribut est toujours <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"fileresponse-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">FileResponse</span></code><a class=\"heading-anchor\" href=\"#fileresponse-objects\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.FileResponse\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FileResponse</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">open_file</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">as_attachment</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">filename</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.FileResponse\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.http.FileResponse\" title=\"django.http.FileResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FileResponse</span></code></a> est une sous-classe de <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StreamingHttpResponse</span></code></a> optimisée pour les fichiers binaires. Elle utilise <span class=\"target\" id=\"index-32\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-3333/#optional-platform-specific-file-handling\"><strong>wsgi.file_wrapper</strong></a> si le serveur WSGI le propose, sinon elle diffuse le fichier par petits morceaux.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">as_attachment=True</span></code>, l’en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Disposition</span></code> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">attachment</span></code>, ce qui pousse le navigateur à proposer le fichier en téléchargement pour l’utilisateur. Sinon, un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Disposition</span></code> avec la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">inline</span></code> (valeur par défaut des navigateurs) sera défini si un nom de fichier est disponible.</p>\n<p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">open_file</span></code> ne possède pas de nom ou si son nom n’est pas adéquat, fournissez un nom de fichier personnalisé en utilisant le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">filename</span></code>. Notez que si vous passez un objet de type fichier tel que <code class=\"docutils literal notranslate\"><span class=\"pre\">io.BytesIO</span></code>, c’est à vous d’appeler <code class=\"docutils literal notranslate\"><span class=\"pre\">seek()</span></code> si nécessaire avant de le passer à <code class=\"docutils literal notranslate\"><span class=\"pre\">FileResponse</span></code>.</p>\n<p>Les en-têtes <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code> sont automatiquement définis lorsqu’ils peuvent être déduits à partir du contenu de <code class=\"docutils literal notranslate\"><span class=\"pre\">open_file</span></code>.</p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">FileResponse</span></code> accepte tout objet de type fichier avec contenu binaire, par exemple un fichier ouvert en mode binaire, comme ceci :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">FileResponse</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">FileResponse</span><span class=\"p\">(</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s1\">&#39;myfile.png&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;rb&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Le fichier sera automatiquement fermé, ne l’ouvrez donc pas avec un gestionnaire de contexte.</p>\n<section id=\"id7\">\n<h3>Méthodes<a class=\"heading-anchor\" href=\"#id7\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.FileResponse.set_headers\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">FileResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">set_headers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">open_file</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.FileResponse.set_headers\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cette méthode est automatiquement appelée durant l’initialisation de la réponse ; elle définit différents en-têtes (<code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Length</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Disposition</span></code>) en fonction du fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">open_file</span></code>.</p>\n</dd></dl>\n\n</section>\n</section>","rootId":"module-django.http","toc":[{"title":"Aperçu rapide","anchor":"quick-overview","children":[]},{"title":"Objets HttpRequest","anchor":"httprequest-objects","children":[{"title":"Attributs","anchor":"attributes","children":[]},{"title":"Attributs définis par le code d’application","anchor":"attributes-set-by-application-code","children":[]},{"title":"Attributs définis par l’intergiciel","anchor":"attributes-set-by-middleware","children":[]},{"title":"Méthodes","anchor":"methods","children":[]}]},{"title":"Objets QueryDict","anchor":"querydict-objects","children":[{"title":"Méthodes","anchor":"id1","children":[]}]},{"title":"Objets HttpResponse","anchor":"httpresponse-objects","children":[{"title":"Utilisation","anchor":"usage","children":[{"title":"Transmission de chaînes","anchor":"passing-strings","children":[]},{"title":"Transmission d’itérateurs","anchor":"passing-iterators","children":[]},{"title":"Définition de champs d’en-tête","anchor":"setting-header-fields","children":[]},{"title":"Réponse indiquant au navigateur de la traiter comme fichier à télécharger","anchor":"telling-the-browser-to-treat-the-response-as-a-file-attachment","children":[]}]},{"title":"Attributs","anchor":"id3","children":[]},{"title":"Méthodes","anchor":"id4","children":[]},{"title":"Sous-classes de HttpResponse","anchor":"httpresponse-subclasses","children":[{"title":"Classes de réponses personnalisées","anchor":"custom-response-classes","children":[]}]}]},{"title":"Objets JsonResponse","anchor":"jsonresponse-objects","children":[{"title":"Utilisation","anchor":"id5","children":[{"title":"Sérialisation d’objets non dictionnaires","anchor":"serializing-non-dictionary-objects","children":[]},{"title":"Modification du codeur JSON par défaut","anchor":"changing-the-default-json-encoder","children":[]}]}]},{"title":"Objets StreamingHttpResponse","anchor":"streaminghttpresponse-objects","children":[{"title":"Attributs","anchor":"id6","children":[]}]},{"title":"Objets FileResponse","anchor":"fileresponse-objects","children":[{"title":"Méthodes","anchor":"id7","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/3.2/ref/"}],"prev":{"docname":"ref/paginator","title":"Pagination","url":"/fr/3.2/ref/paginator/"},"next":{"docname":"ref/schema-editor","title":"SchemaEditor","url":"/fr/3.2/ref/schema-editor/"},"formats":{"html":"/fr/3.2/ref/request-response/","markdown":"/fr/3.2/ref/request-response.md","json":"/fr/3.2/ref/request-response.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/ref/request-response.txt","official":"https://docs.djangoproject.com/fr/3.2/ref/request-response/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}