{"title":"TemplateResponse および SimpleTemplateResponse","version":"5.1","locale":"ja","docname":"ref/template-response","url":"/ja/5.1/ref/template-response/","canonical":"https://djangodocs.dev/ja/5.1/ref/template-response/","summary":"標準の HttpResponse オブジェクトは静的な構造体です。構築時にあらかじめレンダリングされたコンテンツのブロックが提供され、そのコンテンツは変更可能ですが、簡単に変更できる形ではありません。 しかし、デコレータやミドルウェアが、 ビューでレスポンスが作成された後にレスポンスを変更できるようにすることは、…","html":"<span id=\"templateresponse-and-simpletemplateresponse\"></span><h1><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> および <code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code><a class=\"heading-anchor\" href=\"#module-django.template.response\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>標準の <a class=\"reference internal\" href=\"/ja/5.1/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> オブジェクトは静的な構造体です。構築時にあらかじめレンダリングされたコンテンツのブロックが提供され、そのコンテンツは変更可能ですが、簡単に変更できる形ではありません。</p>\n<p>しかし、デコレータやミドルウェアが、 ビューでレスポンスが作成された後にレスポンスを変更できるようにすることは、 場合によっては有益なこともあります。たとえば、使用するテンプレートを変更したり、追加データをコンテキストに追加したりしたくなるかもしれません。</p>\n<p>TemplateResponse はそのための方法を提供します。基本的な <a class=\"reference internal\" href=\"/ja/5.1/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> オブジェクトとは異なり、 TemplateResponse オブジェクトはレスポンスを計算するためにビューから提供されたテンプレートとコンテキストの詳細を保持します。レスポンスの最終的な出力は、レスポンス処理の後半で必要になるまで計算されません。</p>\n<section id=\"simpletemplateresponse-objects\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#simpletemplateresponse-objects\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"attributes\">\n<h3>属性<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レンダリングするテンプレートの名前です。 <a class=\"reference internal\" href=\"/ja/5.1/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> が返すような）バックエンド依存のテンプレートオブジェクト、テンプレート名、またはテンプレート名のリストを受け入れます。</p>\n<p>例: <code class=\"docutils literal notranslate\"><span class=\"pre\">['foo.html',</span> <span class=\"pre\">'path/to/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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>テンプレートをレンダリングするときに使用するコンテキストデータ。 これは <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> でなければなりません。</p>\n<p>例: <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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>現在のテンプレートとコンテキストデータを使ってレンダリングされた、レスポンスコンテンツの現在の値。</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスの内容がレンダリングされたかどうかを示す真偽値。</p>\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>メソッド<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><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> オブジェクトを、与えられたテンプレート、コンテキスト、コンテンツタイプ、HTTP ステータス、文字コードでインスタンス化します。</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">template</span></code></dt><dd><p>(<a class=\"reference internal\" href=\"/ja/5.1/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> が返すような) バックエンド依存のテンプレートオブジェクト、テンプレートの名前、またはテンプレート名のリスト。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code></dt><dd><p>テンプレートコンテキストに追加する値の <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> 。デフォルトでは空の辞書です。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code></dt><dd><p>HTTP の <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code> ヘッダに含まれる値で、MIME タイプ指定と文字セットエンコーディングを含みます。もし <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> が指定されていれば、その値が使われます。それ以外の場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code> が使用されます。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">status</span></code></dt><dd><p>レスポンスの HTTP ステータスコード</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">charset</span></code></dt><dd><p>レスポンスがエンコードされる文字コード。省略された場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> から抽出され、それが失敗した場合は <a class=\"reference internal\" href=\"/ja/5.1/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>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code></dt><dd><p>テンプレートを読み込むために使用するテンプレートエンジンの <a class=\"reference internal\" href=\"/ja/5.1/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a> を指定します。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code></dt><dd><p>レスポンスに追加するHTTPヘッダーの <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> 。</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\"><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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>テンプレートのレンダリングに使用されるコンテキストデータを前処理します。コンテキストデータの <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> を受け取ります。デフォルトでは同じ <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> を返します。</p>\n<p>コンテキストをカスタマイズするには、このメソッドをオーバーライドします。</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レンダリングに使用するテンプレートのインスタンスを解決します。(<a class=\"reference internal\" href=\"/ja/5.1/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> が返すような) バックエンド依存のテンプレートオブジェクト、テンプレート名、またはテンプレート名のリストを受け付けます。</p>\n<p>レンダリングするバックエンド依存のテンプレートオブジェクトインスタンスを返します。</p>\n<p>テンプレートの読み込みをカスタマイズするには、このメソッドをオーバーライドします。</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レンダリングが行われた後に呼び出されるコールバックを追加します。このフックを使用すると、特定の処理 (キャッシュなど) をレンダリングが完了するまで延期できます。</p>\n<p><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> がすでにレンダリングされている場合、コールバックは直ちに呼び出されます。</p>\n<p>呼び出されると、コールバックは単一の引数、つまりレンダリングされた <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> インスタンスを渡されます。</p>\n<p>コールバックが <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> 以外の値を返した場合、元のレスポンスオブジェクトの代わりにこの値がレスポンスとして使用されます（次のレンダリング後コールバックなどに渡されます）。</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">response.content</span></code> を <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> で取得した結果にセットし、全てのレンダリング後コールバックを実行し、結果のレスポンスオブジェクトを返します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">render()</span></code> は最初に呼び出されたときだけ効果を発揮します。それ以降の呼び出しでは、最初の呼び出しで得られた結果を返します。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"templateresponse-objects\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#templateresponse-objects\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> は <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 class=\"reference internal\" href=\"/ja/5.1/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></dl>\n\n<section id=\"id1\">\n<h3>メソッド<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><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> オブジェクトを、与えられたリクエスト、テンプレート、コンテキスト、コンテンツタイプ、HTTP ステータス、文字コードでインスタンス化します。</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p><a class=\"reference internal\" href=\"/ja/5.1/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>(<a class=\"reference internal\" href=\"/ja/5.1/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> が返すような) バックエンド依存のテンプレートオブジェクト、テンプレートの名前、またはテンプレート名のリスト。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">context</span></code></dt><dd><p>テンプレートコンテキストに追加する値の <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> 。デフォルトでは空の辞書です。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code></dt><dd><p>HTTP の <code class=\"docutils literal notranslate\"><span class=\"pre\">Content-Type</span></code> ヘッダに含まれる値で、MIME タイプ指定と文字セットエンコーディングを含みます。もし <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> が指定されていれば、その値が使われます。それ以外の場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code> が使用されます。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">status</span></code></dt><dd><p>レスポンスの HTTP ステータスコード</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">charset</span></code></dt><dd><p>レスポンスがエンコードされる文字コード。省略された場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> から抽出され、それが失敗した場合は <a class=\"reference internal\" href=\"/ja/5.1/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>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code></dt><dd><p>テンプレートを読み込むために使用するテンプレートエンジンの <a class=\"reference internal\" href=\"/ja/5.1/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a> を指定します。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">headers</span></code></dt><dd><p>レスポンスに追加するHTTPヘッダーの <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">dict</span></code></a> 。</p>\n</dd>\n</dl>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"the-rendering-process\">\n<h2>レンダリングプロセス<a class=\"heading-anchor\" href=\"#the-rendering-process\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><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> インスタンスをクライアントに返す前に、レンダリングする必要があります。レンダリングプロセスはテンプレートとコンテキストの中間表現を受け取り、クライアントに提供できる最終的なバイトストリームに変えます。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> がレンダリングされる状況は3つあります：</p>\n<ul class=\"simple\">\n<li><p>TemplateResponse インスタンスが <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>レスポンスの内容を <code class=\"docutils literal notranslate\"><span class=\"pre\">response.content</span></code> に代入して明示的にセットした場合。</p></li>\n<li><p>テンプレート・レスポンス・ミドルウェアを通過した後、レスポンス・ミドルウェアを通過する前。</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> は一度しかレンダリングできません。最初に <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>\n<p>しかし、<code class=\"docutils literal notranslate\"><span class=\"pre\">response.content</span></code> を明示的に代入すると、その変更は常に適用されます。コンテンツを強制的に再レンダリングしたい場合は、以下のようにレンダリングされたコンテンツを再評価し、レスポンスのコンテンツを手動で割り当てます：</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=\"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=\"gp\">&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=\"s2\">&quot;original.html&quot;</span><span class=\"p\">,</span> <span class=\"p\">{})</span>\n<span class=\"gp\">&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=\"gp\">&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=\"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><span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;new.html&quot;</span>\n<span class=\"gp\">&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=\"gp\">&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=\"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><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=\"gp\">&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=\"go\">New content</span>\n</code></pre></div>\n<section id=\"post-render-callbacks\">\n<h3>レンダリング後のコールバック<a class=\"heading-anchor\" href=\"#post-render-callbacks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>キャッシュのようないくつかの操作は、レンダリングされていないテンプレートでは実行できません。それらは完全に完成し、レンダリングされたレスポンスに対して実行されなければなりません。</p>\n<p>ミドルウェアを使用している場合は、それが可能です。ミドルウェアは、ビューからの終了時にレスポンスを処理する複数の機会を提供します。レスポンスミドルウェアに処理を記述すれば、テンプレートのレンダリングが行われた後に実行されることが保証されます。</p>\n<p>しかし、デコレータを使用している場合は、そのような機会はありません。デコレータで定義された処理は、即座に実行されます。</p>\n<p>これを避けるために(そして他の類似のユースケースを補うために) <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> ではレンダリングが完了したときに呼び出されるコールバックを登録できます。このコールバックを使うことで、レンダリングされたコンテンツが利用可能になるまで、重要な処理を延期できます。</p>\n<p>レンダリング後のコールバックを定義するには、response を引数に取る関数を定義し、その関数をテンプレートの response に登録します：</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\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\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=\"s2\">&quot;mytemplate.html&quot;</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> は <code class=\"docutils literal notranslate\"><span class=\"pre\">mytemplate.html</span></code> がレンダリングされた後に呼び出され、完全にレンダリングされた <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> インスタンスが引数として渡されます。</p>\n<p>テンプレートが既にレンダリングされている場合、コールバックは直ちに呼び出されます。</p>\n</section>\n</section>\n<section id=\"using-templateresponse-and-simpletemplateresponse\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> および <code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleTemplateResponse</span></code> を使用する<a class=\"heading-anchor\" href=\"#using-templateresponse-and-simpletemplateresponse\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><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> オブジェクトは、通常の <a class=\"reference internal\" href=\"/ja/5.1/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> が使用できる場所ならどこでも使用できます。また、 <a class=\"reference internal\" href=\"/ja/5.1/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>たとえば、以下のビューはテンプレートとクエリセットを含むコンテキストを持つ <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> を返します：</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\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>\n        <span class=\"n\">request</span><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> <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    <span class=\"p\">)</span>\n</code></pre></div>\n</section>","rootId":"module-django.template.response","toc":[{"title":"SimpleTemplateResponse オブジェクト","anchor":"simpletemplateresponse-objects","children":[{"title":"属性","anchor":"attributes","children":[]},{"title":"メソッド","anchor":"methods","children":[]}]},{"title":"TemplateResponse オブジェクト","anchor":"templateresponse-objects","children":[{"title":"メソッド","anchor":"id1","children":[]}]},{"title":"レンダリングプロセス","anchor":"the-rendering-process","children":[{"title":"レンダリング後のコールバック","anchor":"post-render-callbacks","children":[]}]},{"title":"TemplateResponse および SimpleTemplateResponse を使用する","anchor":"using-templateresponse-and-simpletemplateresponse","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/5.1/ref/"}],"prev":{"docname":"ref/templates/api","title":"Python プログラマーのための Django テンプレート言語","url":"/ja/5.1/ref/templates/api/"},"next":{"docname":"ref/unicode","title":"Unicode データ","url":"/ja/5.1/ref/unicode/"},"formats":{"html":"/ja/5.1/ref/template-response/","markdown":"/ja/5.1/ref/template-response.md","json":"/ja/5.1/ref/template-response.json"},"source":"https://github.com/django/django/blob/stable/5.1.x/docs/ref/template-response.txt","official":"https://docs.djangoproject.com/ja/5.1/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"]}