{"title":"TemplateResponse et SimpleTemplateResponse","version":"6.0","locale":"fr","docname":"ref/template-response","url":"/fr/6.0/ref/template-response/","canonical":"https://djangodocs.dev/fr/6.0/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…","html":"<span id=\"templateresponse-and-simpletemplateresponse\"></span><h1><code class=\"docutils literal notranslate\">TemplateResponse</code> et <code class=\"docutils literal notranslate\">SimpleTemplateResponse</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/6.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</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\">TemplateResponse</code> permettent justement de faire cela. Au contraire des objets <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> basiques, les objets <code class=\"docutils literal notranslate\">TemplateResponse</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\">SimpleTemplateResponse</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\">class</span> </em><span class=\"sig-name descname\">SimpleTemplateResponse</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">template_name</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>The name of the template to be rendered. Accepts a backend-dependent\ntemplate object (such as those returned by\n<a class=\"reference internal\" href=\"/fr/6.0/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\">get_template()</code></a>), the name of a template,\nor a list of template names.</p>\n<p>Exemple :  <code class=\"docutils literal notranslate\">['foo.html', 'chemin/vers/bar.html']</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">context_data</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\">dict</code></a>.</p>\n<p>Exemple : <code class=\"docutils literal notranslate\">{'foo': 123}</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">rendered_content</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">is_rendered</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">__init__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">template</em>, <em class=\"sig-param\">context<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">content_type<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">status<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">charset<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">using<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">headers<span class=\"o\">=</span><span class=\"default_value\">None</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\">SimpleTemplateResponse</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\">template</code></dt><dd><p>A backend-dependent template object (such as those returned by\n<a class=\"reference internal\" href=\"/fr/6.0/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\">get_template()</code></a>), the name of a template,\nor a list of template names.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">context</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\">dictionnaire</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\">content_type</code></dt><dd><p>La valeur incluse dans l’en-tête HTTP <code class=\"docutils literal notranslate\">Content-Type</code>, y compris le type MIME et le codage de caractères. Si <code class=\"docutils literal notranslate\">content_type</code> est indiqué, sa valeur est utilisée. Sinon, c’est <code class=\"docutils literal notranslate\">'text/html'</code> qui est utilisé.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">status</code></dt><dd><p>Le code de statut HTTP de la réponse.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">charset</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\">content_type</code>, et si ce n’est pas fructueux, c’est le réglage <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> qui est utilisé.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">using</code></dt><dd><p>Le nom <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\">NAME</code></a> d’un moteur de gabarit à utiliser pour charger le gabarit.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">headers</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\">dict</code></a> d’en-têtes HTTP à ajouter à la réponse.</p>\n</dd>\n</dl>\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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">resolve_context</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">context</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\">dict</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\">dict</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">resolve_template</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">template</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>Resolves the template instance to use for rendering. Accepts a\nbackend-dependent template object (such as those returned by\n<a class=\"reference internal\" href=\"/fr/6.0/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\">get_template()</code></a>), the name of a template,\nor a list of template names.</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">add_post_render_callback</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\">SimpleTemplateResponse</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\">SimpleTemplateResponse</code></a> rendue.</p>\n<p>Si la fonction de rappel renvoie une valeur autre que <code class=\"docutils literal notranslate\">None</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\">SimpleTemplateResponse.</span><span class=\"sig-name descname\">render</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\">response.content</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\">SimpleTemplateResponse.rendered_content</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\">render()</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\">TemplateResponse</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\">class</span> </em><span class=\"sig-name descname\">TemplateResponse</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\">TemplateResponse</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\">SimpleTemplateResponse</code></a> conscient de la requête <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</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\">TemplateResponse.</span><span class=\"sig-name descname\">__init__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">template</em>, <em class=\"sig-param\">context<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">content_type<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">status<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">charset<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">using<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">headers<span class=\"o\">=</span><span class=\"default_value\">None</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\">TemplateResponse</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\">request</code></dt><dd><p>Une instance <a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">template</code></dt><dd><p>A backend-dependent template object (such as those returned by\n<a class=\"reference internal\" href=\"/fr/6.0/topics/templates/#django.template.loader.get_template\" title=\"django.template.loader.get_template\"><code class=\"xref py py-func docutils literal notranslate\">get_template()</code></a>), the name of a template,\nor a list of template names.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">context</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\">dictionnaire</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\">content_type</code></dt><dd><p>La valeur incluse dans l’en-tête HTTP <code class=\"docutils literal notranslate\">Content-Type</code>, y compris le type MIME et le codage de caractères. Si <code class=\"docutils literal notranslate\">content_type</code> est indiqué, sa valeur est utilisée. Sinon, c’est <code class=\"docutils literal notranslate\">'text/html'</code> qui est utilisé.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">status</code></dt><dd><p>Le code de statut HTTP de la réponse.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">charset</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\">content_type</code>, et si ce n’est pas fructueux, c’est le réglage <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> qui est utilisé.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">using</code></dt><dd><p>Le nom <a class=\"reference internal\" href=\"/fr/6.0/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\">NAME</code></a> d’un moteur de gabarit à utiliser pour charger le gabarit.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">headers</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\">dict</code></a> d’en-têtes HTTP à ajouter à la réponse.</p>\n</dd>\n</dl>\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\">TemplateResponse</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\">TemplateResponse</code>:</p>\n<ul class=\"simple\">\n<li><p>When the <code class=\"docutils literal notranslate\">TemplateResponse</code> instance is explicitly rendered, using\nthe <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\">SimpleTemplateResponse.render()</code></a> method.</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\">response.content</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\">TemplateResponse</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\">SimpleTemplateResponse.render()</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\">response.content</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=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"go\"># Set up a rendered TemplateResponse</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.template.response</span> <span class=\"kn\">import</span> TemplateResponse\n<span class=\"gp\">&gt;&gt;&gt; </span>t <span class=\"o\">=</span> TemplateResponse<span class=\"p\">(</span>request<span class=\"p\">,</span> <span class=\"s2\">&quot;original.html&quot;</span><span class=\"p\">,</span> <span class=\"p\">{})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>t<span class=\"o\">.</span>render<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>t<span class=\"o\">.</span>content<span class=\"p\">)</span>\n<span class=\"go\">Original content</span>\n\n<span class=\"go\"># Re-rendering doesn&#39;t change content</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>t<span class=\"o\">.</span>template_name <span class=\"o\">=</span> <span class=\"s2\">&quot;new.html&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>t<span class=\"o\">.</span>render<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>t<span class=\"o\">.</span>content<span class=\"p\">)</span>\n<span class=\"go\">Original content</span>\n\n<span class=\"go\"># Assigning content does change, no render() call required</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>t<span class=\"o\">.</span>content <span class=\"o\">=</span> t<span class=\"o\">.</span>rendered_content\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>t<span class=\"o\">.</span>content<span class=\"p\">)</span>\n<span class=\"go\">New 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\">TemplateResponse</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\">response</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=\"nn\">django.template.response</span> <span class=\"kn\">import</span> TemplateResponse\n\n\n<span class=\"k\">def</span> <span class=\"nf\">my_render_callback</span><span class=\"p\">(</span>response<span class=\"p\">):</span>\n    <span class=\"c1\"># Do content-sensitive processing</span>\n    do_post_processing<span class=\"p\">()</span>\n\n\n<span class=\"k\">def</span> <span class=\"nf\">my_view</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"c1\"># Create a response</span>\n    response <span class=\"o\">=</span> TemplateResponse<span class=\"p\">(</span>request<span class=\"p\">,</span> <span class=\"s2\">&quot;mytemplate.html&quot;</span><span class=\"p\">,</span> <span class=\"p\">{})</span>\n    <span class=\"c1\"># Register the callback</span>\n    response<span class=\"o\">.</span>add_post_render_callback<span class=\"p\">(</span>my_render_callback<span class=\"p\">)</span>\n    <span class=\"c1\"># Return the response</span>\n    <span class=\"k\">return</span> response\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">my_render_callback()</code> sera invoquée après que <code class=\"docutils literal notranslate\">mytemplate.html</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\">TemplateResponse</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\">TemplateResponse</code> et de <code class=\"docutils literal notranslate\">SimpleTemplateResponse</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>A <a class=\"reference internal\" href=\"#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\">TemplateResponse</code></a> object can be used anywhere that a normal\n<a class=\"reference internal\" href=\"/fr/6.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">django.http.HttpResponse</code></a> can be used. It can also be used as an\nalternative to calling <a class=\"reference internal\" href=\"/fr/6.0/topics/http/shortcuts/#django.shortcuts.render\" title=\"django.shortcuts.render\"><code class=\"xref py py-func docutils literal notranslate\">render()</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\">TemplateResponse</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=\"nn\">django.template.response</span> <span class=\"kn\">import</span> TemplateResponse\n\n\n<span class=\"k\">def</span> <span class=\"nf\">blog_index</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"k\">return</span> TemplateResponse<span class=\"p\">(</span>\n        request<span class=\"p\">,</span> <span class=\"s2\">&quot;entry_list.html&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;entries&quot;</span><span class=\"p\">:</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()}</span>\n    <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/6.0/ref/"}],"prev":{"docname":"ref/templates/api","title":"Le langage de gabarit de Django : pour les programmeurs Python","url":"/fr/6.0/ref/templates/api/"},"next":{"docname":"ref/unicode","title":"Données Unicode","url":"/fr/6.0/ref/unicode/"},"formats":{"html":"/fr/6.0/ref/template-response/","markdown":"/fr/6.0/ref/template-response.md","json":"/fr/6.0/ref/template-response.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/template-response.txt","official":"https://docs.djangoproject.com/fr/6.0/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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}