{"title":"TemplateResponse et SimpleTemplateResponse","version":"3.2","locale":"fr","docname":"ref/template-response","url":"/fr/3.2/ref/template-response/","canonical":"https://djangodocs.dev/fr/3.2/ref/template-response/","summary":"Les objets HttpResponse standards sont des structures statiques. Ils disposent d’un bloc de contenu pré-rendu au moment de la construction de l’objet, et même si ce…","html":"<span id=\"templateresponse-and-simpletemplateresponse\"></span><h1><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code><a class=\"heading-anchor\" href=\"#module-django.template.response\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Les objets <a class=\"reference internal\" href=\"/fr/3.2/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> standards sont des structures statiques. Ils disposent d’un bloc de contenu pré-rendu au moment de la construction de l’objet, et même si ce contenu peut être modifié, il ne l’est pas dans une forme permettant d’effectuer aisément des modifications.</p>\n<p>Cependant, il peut parfois être avantageux de permettre à des décorateurs ou des intergiciels de modifier une réponse <em>après</em> sa construction par la vue. Par exemple, on peut vouloir modifier le gabarit utilisé ou ajouter des données supplémentaires dans le contexte.</p>\n<p>Les objets <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> permettent justement de faire cela. Au contraire des objets <a class=\"reference internal\" href=\"/fr/3.2/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> basiques, les objets <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> conservent les informations de gabarit et de contexte fournis par la vue pour produire la réponse. Le résultat final de la réponse n’est produit qu’au dernier moment, plus tard dans le processus de réponse.</p>\n<section id=\"simpletemplateresponse-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code><a class=\"heading-anchor\" href=\"#simpletemplateresponse-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.template.response.SimpleTemplateResponse\">\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\">SimpleTemplateResponse</span></span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse\"><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<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<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.template_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">template_name</span></span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.template_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nom du gabarit servant à l’affichage. Accepte un objet gabarit dépendant du moteur (tels que ceux renvoyés par <a class=\"reference internal\" href=\"/fr/3.2/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">get_template()</span></code></a>), le nom d’un gabarit ou une liste de noms de gabarits.</p>\n<p>Exemple :  <code class=\"docutils literal notranslate\"><span class=\"pre\">['foo.html',</span> <span class=\"pre\">'chemin/vers/bar.html']</span></code></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.context_data\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">context_data</span></span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.context_data\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Les données de contexte à utiliser lors de la production du gabarit. Cela doit être 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>.</p>\n<p>Exemple : <code class=\"docutils literal notranslate\"><span class=\"pre\">{'foo':</span> <span class=\"pre\">123}</span></code></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.rendered_content\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">rendered_content</span></span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.rendered_content\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La valeur produite actuellement du contenu de la réponse, en utilisant le gabarit en cours et les données de contexte.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.is_rendered\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">is_rendered</span></span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.is_rendered\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une valeur booléenne indiquant si le contenu de la réponse a été produit.</p>\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.template.response.SimpleTemplateResponse.__init__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</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\">template</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</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\">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\">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\">using</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.template.response.SimpleTemplateResponse.__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 <a class=\"reference internal\" href=\"#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> avec le gabarit, le contexte, le type de contenu, le statut HTTP et le jeu de caractères indiqués.</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">template</span></code></dt><dd><p>Un objet gabarit dépendant du moteur (tels que ceux renvoyés par <a class=\"reference internal\" href=\"/fr/3.2/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">get_template()</span></code></a>), le nom d’un gabarit ou une liste de noms de gabarits.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code></dt><dd><p>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\">dictionnaire</span></code></a> de valeurs à ajouter au contexte du gabarit. Par défaut, ce dictionnaire est vide.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code></dt><dd><p>La valeur incluse dans l’en-tête HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code>, y compris le type MIME et le codage de caractères. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> est indiqué, sa valeur est utilisée. Sinon, c’est <code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code> qui est utilisé.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">status</span></code></dt><dd><p>Le code de statut HTTP de la réponse.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">charset</span></code></dt><dd><p>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</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code></dt><dd><p>Le nom <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a> d’un moteur de gabarit à utiliser pour charger le gabarit.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code></dt><dd><p>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 à ajouter à la réponse.</p>\n</dd>\n</dl>\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.template.response.SimpleTemplateResponse.resolve_context\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">resolve_context</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.resolve_context\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Prétraite les données de contexte qui seront utilisées pour la production d’un gabarit. Accepte 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> de données de contexte. Par défaut, renvoie le même <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>.</p>\n<p>Surchargez cette méthode afin de personnaliser le contexte.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.resolve_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">resolve_template</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.resolve_template\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Résout l’instance de gabarit à utiliser pour l’affichage. Accepte un objet gabarit dépendant du moteur (tels que ceux renvoyés par <a class=\"reference internal\" href=\"/fr/3.2/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">get_template()</span></code></a>), le nom d’un gabarit ou une liste de noms de gabarits.</p>\n<p>Renvoie l’instance d’objet gabarit, dépendante du moteur, qu’il faut afficher.</p>\n<p>Surchargez cette méthode afin de personnaliser le chargement des gabarits.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.add_post_render_callback\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_post_render_callback</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.add_post_render_callback\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute une fonction de rappel qui sera appelée après la fin du rendu. Ce point d’entrée peut être utilisé pour reporter certaines opérations de traitement (comme le cache) à la fin de l’étape de rendu.</p>\n<p>Si l’objet <a class=\"reference internal\" href=\"#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> a déjà été rendu, la fonction de rappel est immédiatement appelée.</p>\n<p>Lorsqu’elles sont appelées, les fonctions de rappel reçoivent un seul paramètre, l’instance <a class=\"reference internal\" href=\"#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> rendue.</p>\n<p>Si la fonction de rappel renvoie une valeur autre que <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, cette valeur est utilisée comme réponse en lieu et place de l’objet réponse original (et sera transmise à la fonction de rappel « post-rendu » suivante, etc.).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.SimpleTemplateResponse.render\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SimpleTemplateResponse.</span></span><span class=\"sig-name descname\"><span class=\"pre\">render</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.template.response.SimpleTemplateResponse.render\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Définit <code class=\"docutils literal notranslate\"><span class=\"pre\">response.content</span></code> au résultat obtenu par <a class=\"reference internal\" href=\"#django.template.response.SimpleTemplateResponse.rendered_content\" title=\"django.template.response.SimpleTemplateResponse.rendered_content\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse.rendered_content</span></code></a>, exécute toutes les fonctions de rappel « post-rendu » et renvoie l’objet réponse résultant.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">render()</span></code> n’a d’effet que lors de son premier appel. Pour les appels suivants, elle renvoie le résultat obtenu lors du premier appel.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"templateresponse-objects\">\n<h2>Objets <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code><a class=\"heading-anchor\" href=\"#templateresponse-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.template.response.TemplateResponse\">\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\">TemplateResponse</span></span><a class=\"heading-anchor\" href=\"#django.template.response.TemplateResponse\"><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\">TemplateResponse</span></code> est une sous-classe de <a class=\"reference internal\" href=\"#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> conscient de la requête <a class=\"reference internal\" href=\"/fr/3.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> en cours.</p>\n</dd></dl>\n\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<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.template.response.TemplateResponse.__init__\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">TemplateResponse.</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\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</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\">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\">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\">using</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.template.response.TemplateResponse.__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 <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> avec la requête, le gabarit, le contexte, le type de contenu, le statut HTTP et le jeu de caractères indiqués.</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>Une instance <a class=\"reference internal\" href=\"/fr/3.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">template</span></code></dt><dd><p>Un objet gabarit dépendant du moteur (tels que ceux renvoyés par <a class=\"reference internal\" href=\"/fr/3.2/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">get_template()</span></code></a>), le nom d’un gabarit ou une liste de noms de gabarits.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code></dt><dd><p>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\">dictionnaire</span></code></a> de valeurs à ajouter au contexte du gabarit. Par défaut, ce dictionnaire est vide.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code></dt><dd><p>La valeur incluse dans l’en-tête HTTP <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code>, y compris le type MIME et le codage de caractères. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> est indiqué, sa valeur est utilisée. Sinon, c’est <code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code> qui est utilisé.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">status</span></code></dt><dd><p>Le code de statut HTTP de la réponse.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">charset</span></code></dt><dd><p>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</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code></dt><dd><p>Le nom <a class=\"reference internal\" href=\"/fr/3.2/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a> d’un moteur de gabarit à utiliser pour charger le gabarit.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code></dt><dd><p>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 à ajouter à la réponse.</p>\n</dd>\n</dl>\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</section>\n</section>\n<section id=\"the-rendering-process\">\n<h2>Le processus de rendu<a class=\"heading-anchor\" href=\"#the-rendering-process\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Avant qu’une instance <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> puisse être renvoyée au client, elle doit être rendue. Le processus de rendu se saisit de la représentation intermédiaire du gabarit et du contexte, et s’en sert pour produire le flux binaire final qui sera envoyé au client.</p>\n<p>Trois circonstances provoquent le rendu d’un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code>:</p>\n<ul class=\"simple\">\n<li><p>Lorsqu’une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> est explicitement rendue par le moyen de la méthode <a class=\"reference internal\" href=\"#django.template.response.SimpleTemplateResponse.render\" title=\"django.template.response.SimpleTemplateResponse.render\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse.render()</span></code></a>.</p></li>\n<li><p>Lorsque le contenu de la réponse est défini explicitement en attribuant une valeur à <code class=\"docutils literal notranslate\"><span class=\"pre\">response.content</span></code>.</p></li>\n<li><p>Après avoir traversé l’intergiciel de réponse de gabarit, mais avant de passer par l’intergiciel de réponse.</p></li>\n</ul>\n<p>Un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> peut être rendu une seule fois. Le premier appel à <a class=\"reference internal\" href=\"#django.template.response.SimpleTemplateResponse.render\" title=\"django.template.response.SimpleTemplateResponse.render\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse.render()</span></code></a> définit le contenu de la réponse ; les appels de rendu suivants ne modifient pas le contenu de la réponse.</p>\n<p>Cependant, lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">response.content</span></code> reçoit explicitement une valeur, la modification est toujours appliquée. Si vous souhaitez forcer le contenu à être rendu à nouveau, vous pouvez ré-évaluer le contenu à produire et attribuer manuellement ce contenu à la réponse :</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=\"c1\"># Set up a rendered TemplateResponse</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.template.response</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateResponse</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">t</span> <span class=\"o\">=</span> <span class=\"n\">TemplateResponse</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;original.html&#39;</span><span class=\"p\">,</span> <span class=\"p\">{})</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">render</span><span class=\"p\">()</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">content</span><span class=\"p\">)</span>\n<span class=\"n\">Original</span> <span class=\"n\">content</span>\n\n<span class=\"c1\"># Re-rendering doesn&#39;t change content</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;new.html&#39;</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">render</span><span class=\"p\">()</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">content</span><span class=\"p\">)</span>\n<span class=\"n\">Original</span> <span class=\"n\">content</span>\n\n<span class=\"c1\"># Assigning content does change, no render() call required</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">content</span> <span class=\"o\">=</span> <span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">rendered_content</span>\n<span class=\"o\">&gt;&gt;&gt;</span> <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">content</span><span class=\"p\">)</span>\n<span class=\"n\">New</span> <span class=\"n\">content</span>\n</code></pre></div>\n<section id=\"post-render-callbacks\">\n<h3>Fonctions de rappel « post-rendu »<a class=\"heading-anchor\" href=\"#post-render-callbacks\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Certaines opérations (comme la mise en cache) ne peuvent pas opérer sur un gabarit non rendu. Elles doivent agir sur une réponse dont le rendu est complet et terminé.</p>\n<p>Si vous utilisez un intergiciel, c’est possible de le faire. Les intergiciels offrent de multiples possibilités de traiter une réponse à la sortie d’une vue. Si vous placez une certaine logique dans l’intergiciel de réponse, elle s’exécutera à coup sûr après la phase de rendu du gabarit.</p>\n<p>Cependant, si vous utilisez un décorateur, une telle possibilité n’existe pas. Toute logique placée dans un décorateur est traitée immédiatement.</p>\n<p>Pour compenser cela (et d’autres cas d’utilisation similaires), <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> vous permet d’inscrire des fonctions de rappel qui seront invoquées après la fin du rendu. En utilisant ces fonctions de rappel, vous pouvez reporter un traitement critique à un stade où vous êtes certain que le contenu rendu sera disponible.</p>\n<p>Pour définir une fonction de rappel « post-rendu », définissez une fonction acceptant un seul paramètre (<code class=\"docutils literal notranslate\"><span class=\"pre\">response</span></code>) et d’inscrire cette fonction auprès de la réponse de gabarit :</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\">django.template.response</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateResponse</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_render_callback</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Do content-sensitive processing</span>\n    <span class=\"n\">do_post_processing</span><span class=\"p\">()</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Create a response</span>\n    <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">TemplateResponse</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;mytemplate.html&#39;</span><span class=\"p\">,</span> <span class=\"p\">{})</span>\n    <span class=\"c1\"># Register the callback</span>\n    <span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">add_post_render_callback</span><span class=\"p\">(</span><span class=\"n\">my_render_callback</span><span class=\"p\">)</span>\n    <span class=\"c1\"># Return the response</span>\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">my_render_callback()</span></code> sera invoquée après que <code class=\"docutils literal notranslate\"><span class=\"pre\">mytemplate.html</span></code> aura été rendu et recevra en paramètre l’instance <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> dont le rendu sera terminé.</p>\n<p>Si le gabarit a déjà été rendu, la fonction de rappel est immédiatement appelée.</p>\n</section>\n</section>\n<section id=\"using-templateresponse-and-simpletemplateresponse\">\n<h2>Utilisation de <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> et de <code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code><a class=\"heading-anchor\" href=\"#using-templateresponse-and-simpletemplateresponse\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Un objet <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> peut être utilisé partout où un objet <a class=\"reference internal\" href=\"/fr/3.2/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.http.HttpResponse</span></code></a> normal peut être utilisé. Il peut également être utilisé comme alternative à un appel à <a class=\"reference internal\" href=\"/fr/3.2/topics/http/shortcuts/#django.shortcuts.render\" title=\"django.shortcuts.render\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">render()</span></code></a>.</p>\n<p>Par exemple, la vue suivante renvoie un objet <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> avec un gabarit et un contexte contenant un jeu de requête :</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\">django.template.response</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateResponse</span>\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">blog_index</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">TemplateResponse</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s1\">&#39;entry_list.html&#39;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s1\">&#39;entries&#39;</span><span class=\"p\">:</span> <span class=\"n\">Entry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()})</span>\n</code></pre></div>\n</section>","rootId":"module-django.template.response","toc":[{"title":"Objets SimpleTemplateResponse","anchor":"simpletemplateresponse-objects","children":[{"title":"Attributs","anchor":"attributes","children":[]},{"title":"Méthodes","anchor":"methods","children":[]}]},{"title":"Objets TemplateResponse","anchor":"templateresponse-objects","children":[{"title":"Méthodes","anchor":"id1","children":[]}]},{"title":"Le processus de rendu","anchor":"the-rendering-process","children":[{"title":"Fonctions de rappel « post-rendu »","anchor":"post-render-callbacks","children":[]}]},{"title":"Utilisation de TemplateResponse et de SimpleTemplateResponse","anchor":"using-templateresponse-and-simpletemplateresponse","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/3.2/ref/"}],"prev":{"docname":"ref/templates/api","title":"Le langage de gabarit de Django : pour les programmeurs Python","url":"/fr/3.2/ref/templates/api/"},"next":{"docname":"ref/unicode","title":"Données Unicode","url":"/fr/3.2/ref/unicode/"},"formats":{"html":"/fr/3.2/ref/template-response/","markdown":"/fr/3.2/ref/template-response.md","json":"/fr/3.2/ref/template-response.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/ref/template-response.txt","official":"https://docs.djangoproject.com/fr/3.2/ref/template-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"]}