{"title":"リクエストとレスポンスのオブジェクト","version":"6.0","locale":"ja","docname":"ref/request-response","url":"/ja/6.0/ref/request-response/","canonical":"https://djangodocs.dev/ja/6.0/ref/request-response/","summary":"Django は、システムを通じてステータスを渡すために、リクエストとレスポンスのオブジェクトを使います。","html":"<span id=\"request-and-response-objects\"></span><h1>リクエストとレスポンスのオブジェクト<a class=\"heading-anchor\" href=\"#module-django.http\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"quick-overview\">\n<h2>簡単な概要<a class=\"heading-anchor\" href=\"#quick-overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django は、システムを通じてステータスを渡すために、リクエストとレスポンスのオブジェクトを使います。</p>\n<p>あるページがリクエストされたとき、Django はリクエストに関するメタデータを含んだ <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> オブジェクトを生成します。それから Django は <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> をビュー関数の最初の関数として渡し、適切なビューを読み込みます。あらゆるビューは <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> オブジェクトを返す必要があります。</p>\n<p>このドキュメントでは、<a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> と <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> オブジェクトの API を説明しています。これは <a class=\"reference internal\" href=\"#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\">django.http</code></a> モジュールにて定義されています。</p>\n</section>\n<section id=\"httprequest-objects\">\n<h2><code class=\"docutils literal notranslate\">HttpRequest</code> オブジェクト<a class=\"heading-anchor\" href=\"#httprequest-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.http.HttpRequest\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpRequest</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest\"><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<span id=\"httprequest-attributes\"></span><h3>属性<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>特に記載がない限り、全ての属性は読み取り専用だと考えてください。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.scheme\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">scheme</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.scheme\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストのスキームを表す文字列です (通常は <code class=\"docutils literal notranslate\">http</code> か <code class=\"docutils literal notranslate\">https</code>)。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.body\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">body</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.body\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>生の HTTP リクエストボディをバイト文字列として。これは、従来の HTML フォームとは異なる方法でデータを処理するのに便利です：バイナリイメージ、XML ペイロードなど。従来のフォームデータを処理する場合は、<a class=\"reference internal\" href=\"#django.http.HttpRequest.POST\" title=\"django.http.HttpRequest.POST\"><code class=\"xref py py-attr docutils literal notranslate\">HttpRequest.POST</code></a> を使用してください。</p>\n<p><a class=\"reference internal\" href=\"#django.http.HttpRequest.read\" title=\"django.http.HttpRequest.read\"><code class=\"xref py py-meth docutils literal notranslate\">HttpRequest.read()</code></a> や <a class=\"reference internal\" href=\"#django.http.HttpRequest.readline\" title=\"django.http.HttpRequest.readline\"><code class=\"xref py py-meth docutils literal notranslate\">HttpRequest.readline()</code></a> を用いて、ファイルのようなインタフェースから <code class=\"docutils literal notranslate\">HttpRequest</code> を読み取ることもできます。これらの I/O ストリームメソッドを用いてリクエストを読み取った <em>後に</em> <code class=\"docutils literal notranslate\">body</code> 属性にアクセスすると、<code class=\"docutils literal notranslate\">RawPostDataException</code> が発生します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.path\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">path</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>要求されたページへのフルパスを表す文字列であり、scheme、ドメイン、クエリ文字列は含みません。</p>\n<p>例: <code class=\"docutils literal notranslate\">&quot;/music/bands/the_beatles/&quot;</code></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.path_info\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">path_info</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.path_info\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>一部のWebサーバー構成では、ホスト名の後のURLがスクリプトプレフィックス部分とパス情報部分に分割されます。<code class=\"docutils literal notranslate\">path_info</code> 属性は、使用されるWebサーバーに関わらず常にパス情報部分を含んでいます。これを <a class=\"reference internal\" href=\"#django.http.HttpRequest.path\" title=\"django.http.HttpRequest.path\"><code class=\"xref py py-attr docutils literal notranslate\">path</code></a> の代わりに使用することで、テストサーバーとデプロイメントサーバー間でコードを移動させやすくなります。</p>\n<p>たとえば、アプリケーションの <code class=\"docutils literal notranslate\">WSGIScriptAlias</code> が <code class=\"docutils literal notranslate\">&quot;/minfo&quot;</code> に設定されている場合、<code class=\"docutils literal notranslate\">path</code> が <code class=\"docutils literal notranslate\">&quot;/minfo/music/bands/the_beatles/&quot;</code> である一方、<code class=\"docutils literal notranslate\">path_info</code> は <code class=\"docutils literal notranslate\">&quot;/music/bands/the_beatles/&quot;</code> となる可能性があります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.method\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">method</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.method\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストで使用された HTTP メソッドを表す文字列です。この値は常に大文字となることが保証されています。たとえば、次のようになります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> request<span class=\"o\">.</span>method <span class=\"o\">==</span> <span class=\"s2\">&quot;GET&quot;</span><span class=\"p\">:</span>\n    do_something<span class=\"p\">()</span>\n<span class=\"k\">elif</span> request<span class=\"o\">.</span>method <span class=\"o\">==</span> <span class=\"s2\">&quot;POST&quot;</span><span class=\"p\">:</span>\n    do_something_else<span class=\"p\">()</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.encoding\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">encoding</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.encoding\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フォーム提出データをデコードする際に使用されている現在のエンコーディングを表す文字列（または <code class=\"docutils literal notranslate\">None</code> で、これは <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> 設定が使用されることを意味します）。この属性に書き込むことで、フォームデータにアクセスする際に使用されるエンコーディングを変更できます。その後の属性アクセス（<a class=\"reference internal\" href=\"#django.http.HttpRequest.GET\" title=\"django.http.HttpRequest.GET\"><code class=\"xref py py-attr docutils literal notranslate\">GET</code></a> や <a class=\"reference internal\" href=\"#django.http.HttpRequest.POST\" title=\"django.http.HttpRequest.POST\"><code class=\"xref py py-attr docutils literal notranslate\">POST</code></a> からの読み取りなど）は、新しい <code class=\"docutils literal notranslate\">encoding</code> 値を使用します。フォームデータが <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> エンコーディングでないことがわかっている場合に便利です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.content_type\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">content_type</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.content_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストの MIME タイプを表す文字列です。<code class=\"docutils literal notranslate\">CONTENT_TYPE</code> から識別されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.content_params\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">content_params</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.content_params\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">CONTENT_TYPE</code> ヘッダに含まれる、キーと値のパラーメータのディクショナリです。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.GET\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">GET</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.GET\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>渡された HTTP GET パラメータを含む、ディクショナリライクのオブジェクトです。後述の <a class=\"reference internal\" href=\"#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\">QueryDict</code></a> のドキュメントを参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.POST\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">POST</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.POST\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストにフォームデータが含まれている場合に、すべての与えられた HTTP POST パラメータを含む辞書のようなオブジェクト。以下の <a class=\"reference internal\" href=\"#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\">QueryDict</code></a> ドキュメントを参照してください。リクエストにポストされた生のデータや非フォームデータにアクセスする必要がある場合は、代わりに <a class=\"reference internal\" href=\"#django.http.HttpRequest.body\" title=\"django.http.HttpRequest.body\"><code class=\"xref py py-attr docutils literal notranslate\">HttpRequest.body</code></a> 属性を通じてアクセスしてください。</p>\n<p>POST メソッドでフォームデータが含まれていない場合に、空の <code class=\"docutils literal notranslate\">POST</code> ディクショナリを備えたリクエストが発生する可能性があります。そのため、POST メソッドの使用を確認するために <code class=\"docutils literal notranslate\">if request.POST</code> を使用すべきではありません。代わりに、 <code class=\"docutils literal notranslate\">if request.method == &quot;POST&quot;</code> を使用してください (<a class=\"reference internal\" href=\"#django.http.HttpRequest.method\" title=\"django.http.HttpRequest.method\"><code class=\"xref py py-attr docutils literal notranslate\">HttpRequest.method</code></a> を参照)。</p>\n<p><code class=\"docutils literal notranslate\">POST</code> には file-upload の情報が含まれ <em>ません</em> 。詳しくは <a class=\"reference internal\" href=\"#django.http.HttpRequest.FILES\" title=\"django.http.HttpRequest.FILES\"><code class=\"xref py py-attr docutils literal notranslate\">FILES</code></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.COOKIES\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">COOKIES</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.COOKIES\"><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.http.HttpRequest.FILES\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">FILES</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.FILES\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">FILES</code> は、アップロードされた全てのファイルを含む辞書型のオブジェクトです。<code class=\"docutils literal notranslate\">FILES</code> の各キーは <code class=\"docutils literal notranslate\">&lt;input type=&quot;file&quot; name=&quot;&quot;&gt;</code> の <code class=\"docutils literal notranslate\">name</code> から成ります。<code class=\"docutils literal notranslate\">FILES</code> の各値は <a class=\"reference internal\" href=\"/ja/6.0/ref/files/uploads/#django.core.files.uploadedfile.UploadedFile\" title=\"django.core.files.uploadedfile.UploadedFile\"><code class=\"xref py py-class docutils literal notranslate\">UploadedFile</code></a> です。</p>\n<p>詳細については、<a class=\"reference internal\" href=\"/ja/6.0/topics/files/\"><span class=\"doc\">ファイルの管理</span></a> を参照してください。</p>\n<p><code class=\"docutils literal notranslate\">FILES</code> には、リクエストメソッドが POST で、リクエストに投稿した <code class=\"docutils literal notranslate\">&lt;form&gt;</code> に <code class=\"docutils literal notranslate\">enctype=&quot;multipart/form-data&quot;</code> が設定されていた場合にのみデータが含まれます。それ以外の場合、<code class=\"docutils literal notranslate\">FILES</code> は空の辞書のようなオブジェクトになります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.META\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">META</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.META\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>利用できるすべての HTTP ヘッダーが格納されたディクショナリです。利用可能なヘッダーはクライアントとサーバーによって異なりますが、以下に例を示します。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">CONTENT_LENGTH</code> -- リクエスト本文の (文字列としての) 長さです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">CONTENT_TYPE</code> -- リクエスト本文の MIME タイプです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">HTTP_ACCEPT</code> -- レスポンスに対して受け入れ可能なコンテンツのタイプです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">HTTP_ACCEPT_ENCODING</code> -- レスポンスに対して受け入れ可能なエンコーディングです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">HTTP_ACCEPT_LANGUAGE</code> -- レスポンスに対して受け入れ可能な言語です。</p></li>\n<li><p><code class=\"docutils literal notranslate\">HTTP_HOST</code> -- クライアントによって送信された HTTP Host ヘッダです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">HTTP_REFERER</code> -- (存在する場合) リファラページです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">HTTP_USER_AGENT</code> -- クライアントのユーザエージェント文字列です。</p></li>\n<li><p><code class=\"docutils literal notranslate\">QUERY_STRING</code> -- クエリ文字列で、単一の (未解析の) 文字列です。</p></li>\n<li><p><code class=\"docutils literal notranslate\">REMOTE_ADDR</code> -- クライアントの IP アドレスです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">REMOTE_HOST</code> -- クライアントのホスト名です。</p></li>\n<li><p><code class=\"docutils literal notranslate\">REMOTE_USER</code> -- ウェブサーバーによって認証されたユーザー(もしあれば)。</p></li>\n<li><p><code class=\"docutils literal notranslate\">REQUEST_METHOD</code> -- <code class=\"docutils literal notranslate\">&quot;GET&quot;</code> や <code class=\"docutils literal notranslate\">&quot;POST&quot;</code> といったです。</p></li>\n<li><p><code class=\"docutils literal notranslate\">SERVER_NAME</code> -- サーバのホスト名です。</p></li>\n<li><p><code class=\"docutils literal notranslate\">SERVER_PORT</code> -- (文字列としての) サーバのポートです。</p></li>\n</ul>\n<p>上記の <code class=\"docutils literal notranslate\">CONTENT_LENGTH</code> と <code class=\"docutils literal notranslate\">CONTENT_TYPE</code> を除き、リクエストの HTTP ヘッダーは、すべての文字を大文字に変換し、ハイフンをアンダースコアに置き換え、名前に <code class=\"docutils literal notranslate\">HTTP_</code> プレフィックスを追加することで <code class=\"docutils literal notranslate\">META</code> キーに変換されます。たとえば、<code class=\"docutils literal notranslate\">X-Bender</code> というヘッダーは <code class=\"docutils literal notranslate\">META</code> キー <code class=\"docutils literal notranslate\">HTTP_X_BENDER</code> にマッピングされます。</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\">runserver</code></a> では、名前にアンダースコアを含むヘッダーはすべて削除されるため、<code class=\"docutils literal notranslate\">META</code> にそれらが表示されません。これにより、WSGI 環境変数内のアンダースコアとダッシュの曖昧さに基づくヘッダー・スプーフィングが防がれます。この動作は、Nginx や Apache 2.4+ のようなウェブサーバーと一致しています。</p>\n<p><a class=\"reference internal\" href=\"#django.http.HttpRequest.headers\" title=\"django.http.HttpRequest.headers\"><code class=\"xref py py-attr docutils literal notranslate\">HttpRequest.headers</code></a> は <code class=\"docutils literal notranslate\">CONTENT_LENGTH</code> と <code class=\"docutils literal notranslate\">CONTENT_TYPE</code> を含む、全てのHTTPプレフィックス付きヘッダーにアクセスするより簡単な方法です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.headers\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">headers</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.headers\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストからHTTPプリフィックスヘッダー全体 (<code class=\"docutils literal notranslate\">Content-Length</code> と <code class=\"docutils literal notranslate\">Content-Type</code> を含む) にアクセスを提供する、大文字小文字を区別しない辞書風オブジェクトです。</p>\n<p>各ヘッダーの名前は、表示される際にタイトルケース (例: <code class=\"docutils literal notranslate\">User-Agent</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=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>headers\n<span class=\"go\">{&#39;User-Agent&#39;: &#39;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6&#39;, ...}</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"s2\">&quot;User-Agent&quot;</span> <span class=\"ow\">in</span> request<span class=\"o\">.</span>headers\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"s2\">&quot;user-agent&quot;</span> <span class=\"ow\">in</span> request<span class=\"o\">.</span>headers\n<span class=\"go\">True</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>headers<span class=\"p\">[</span><span class=\"s2\">&quot;User-Agent&quot;</span><span class=\"p\">]</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>headers<span class=\"p\">[</span><span class=\"s2\">&quot;user-agent&quot;</span><span class=\"p\">]</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>headers<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"s2\">&quot;User-Agent&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>headers<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"s2\">&quot;user-agent&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6)</span>\n</code></pre></div>\n<p>たとえば Django テンプレートでの使用において、ヘッダーはハイフンの代わりにアンダースコアを使用してもルックアップできます。</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"cp\">{{</span> <span class=\"nv\">request.headers.user_agent</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.resolver_match\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">resolver_match</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.resolver_match\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>解決されたURLを表す <a class=\"reference internal\" href=\"/ja/6.0/ref/urlresolvers/#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\">ResolverMatch</code></a> のインスタンスです。この属性は、URLの解決が行われた後にのみ設定されます。つまり、全てのビューで利用可能ですが、URLの解決が行われる前に実行されるミドルウェアでは利用できません (<a class=\"reference internal\" href=\"/ja/6.0/topics/http/middleware/#process_view\" title=\"process_view\"><code class=\"xref py py-meth docutils literal notranslate\">process_view()</code></a> では使用できます)。</p>\n</dd></dl>\n\n</section>\n<section id=\"attributes-set-by-application-code\">\n<h3>アプリケーションコードがセットする属性<a class=\"heading-anchor\" href=\"#attributes-set-by-application-code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django はこれらの属性を自分で設定することはありませんが、アプリケーション側で設定された場合にはその値を利用します。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.current_app\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">current_app</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.current_app\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The <a class=\"reference internal\" href=\"/ja/6.0/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\">url</code></a> template tag will use its value as the <code class=\"docutils literal notranslate\">current_app</code>\nargument to <a class=\"reference internal\" href=\"/ja/6.0/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\">reverse()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.urlconf\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">urlconf</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.urlconf\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この値は、現在のリクエストに対する root URLconf として使用され、設定の <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\">ROOT_URLCONF</code></a> を上書きします。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/topics/http/urls/#how-django-processes-a-request\"><span class=\"std std-ref\">Django のリクエスト処理</span></a> を参照してください。</p>\n<p><code class=\"docutils literal notranslate\">urlconf</code> は <code class=\"docutils literal notranslate\">None</code> に設定することで、それまでにミドルウェアで行われた変更を取り消し、元の <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\">ROOT_URLCONF</code></a> を使用するようにできます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.exception_reporter_filter\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">exception_reporter_filter</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.exception_reporter_filter\"><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/6.0/ref/settings/#std-setting-DEFAULT_EXCEPTION_REPORTER_FILTER\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_EXCEPTION_REPORTER_FILTER</code></a> の代わりに使用されます。詳細については、 <a class=\"reference internal\" href=\"/ja/6.0/howto/error-reporting/#custom-error-reports\"><span class=\"std std-ref\">カスタムエラーレポート</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.exception_reporter_class\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">exception_reporter_class</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.exception_reporter_class\"><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/6.0/ref/settings/#std-setting-DEFAULT_EXCEPTION_REPORTER\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_EXCEPTION_REPORTER</code></a> の代わりに使用されます。詳細については <a class=\"reference internal\" href=\"/ja/6.0/howto/error-reporting/#custom-error-reports\"><span class=\"std std-ref\">カスタムエラーレポート</span></a> を参照してください。</p>\n</dd></dl>\n\n</section>\n<section id=\"attributes-set-by-middleware\">\n<h3>ミドルウェアが設定する属性<a class=\"heading-anchor\" href=\"#attributes-set-by-middleware\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django の contrib アプリなどのミドルウェアの一部は、リクエストに属性を設定します。もし、リクエストに属性が設定されていない場合は、<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\">MIDDLEWARE</code></a> リスト中に適切なミドルウェアが含まれているかを確認してください。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.session\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">session</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.session\"><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/6.0/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">SessionMiddleware</code></a> は、現在のセッションを表す、読み書き可能でディクショナリライクなオブジェクトを設定します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.site\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">site</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.site\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>From the <a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.contrib.sites.middleware.CurrentSiteMiddleware\" title=\"django.contrib.sites.middleware.CurrentSiteMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">CurrentSiteMiddleware</code></a>:\nAn instance of <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/sites/#django.contrib.sites.models.Site\" title=\"django.contrib.sites.models.Site\"><code class=\"xref py py-class docutils literal notranslate\">Site</code></a> or\n<a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/sites/#django.contrib.sites.requests.RequestSite\" title=\"django.contrib.sites.requests.RequestSite\"><code class=\"xref py py-class docutils literal notranslate\">RequestSite</code></a> as returned by\n<a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/sites/#django.contrib.sites.shortcuts.get_current_site\" title=\"django.contrib.sites.shortcuts.get_current_site\"><code class=\"xref py py-func docutils literal notranslate\">get_current_site()</code></a>\nrepresenting the current site.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.user\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">user</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.user\"><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/6.0/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationMiddleware</code></a> から: 現在ログインしているユーザーを表す <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\">AUTH_USER_MODEL</code></a> のインスタンスです。ユーザーが現在ログインしていない場合、 <code class=\"docutils literal notranslate\">user</code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a> のインスタンスに設定されます。 <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\">is_authenticated</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=\"k\">if</span> request<span class=\"o\">.</span>user<span class=\"o\">.</span>is_authenticated<span class=\"p\">:</span>\n    <span class=\"o\">...</span>  <span class=\"c1\"># Do something for logged-in users.</span>\n<span class=\"k\">else</span><span class=\"p\">:</span>\n    <span class=\"o\">...</span>  <span class=\"c1\"># Do something for anonymous users.</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.http.HttpRequest.auser\" title=\"django.http.HttpRequest.auser\"><code class=\"xref py py-meth docutils literal notranslate\">auser()</code></a> メソッドは同じ機能を提供しますが、非同期コンテキストから使用できます。</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.http.HttpRequest.auser\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">auser</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.auser\"><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/6.0/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationMiddleware</code></a> から: コルーチン。現在ログインしているユーザーを表す <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\">AUTH_USER_MODEL</code></a> のインスタンスを返します。もしユーザーが現在ログインしていない場合、<code class=\"docutils literal notranslate\">auser</code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a> のインスタンスを返します。これは <a class=\"reference internal\" href=\"#django.http.HttpRequest.user\" title=\"django.http.HttpRequest.user\"><code class=\"xref py py-attr docutils literal notranslate\">user</code></a> 属性に似ていますが、非同期コンテキストでも機能します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_host\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">get_host</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_host\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストの発信元ホストを返します。この情報は、順番に <code class=\"docutils literal notranslate\">HTTP_X_FORWARDED_HOST</code> (もし <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-USE_X_FORWARDED_HOST\"><code class=\"xref std std-setting docutils literal notranslate\">USE_X_FORWARDED_HOST</code></a> が有効な場合) および <code class=\"docutils literal notranslate\">HTTP_HOST</code> ヘッダーから取得されます。これらが値を提供しない場合、メソッドは <code class=\"docutils literal notranslate\">SERVER_NAME</code> と <code class=\"docutils literal notranslate\">SERVER_PORT</code> の組み合わせを使用します。詳細は <span class=\"target\" id=\"index-23\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-3333/\"><strong>PEP 3333</strong></a> で説明されています。</p>\n<p>例: <code class=\"docutils literal notranslate\">&quot;127.0.0.1:8000&quot;</code></p>\n<p>ホストが <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\">ALLOWED_HOSTS</code></a> にないか、ドメイン名が <span class=\"target\" id=\"index-24\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc1034.html\"><strong>RFC 1034</strong></a>/<span class=\"target\" id=\"index-25\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc1035.html\"><strong>1035</strong></a> に従っていない場合、 <code class=\"docutils literal notranslate\">django.core.exceptions.DisallowedHost</code> を発生させます。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>The <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\">get_host()</code></a> method fails when the host is\nbehind multiple proxies. One solution is to use middleware to rewrite\nthe proxy headers, as in the following example:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">MultipleProxyMiddleware</span><span class=\"p\">:</span>\n    FORWARDED_FOR_FIELDS <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"s2\">&quot;HTTP_X_FORWARDED_FOR&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;HTTP_X_FORWARDED_HOST&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;HTTP_X_FORWARDED_SERVER&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> get_response<span class=\"p\">):</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>get_response <span class=\"o\">=</span> get_response\n\n    <span class=\"k\">def</span> <span class=\"fm\">__call__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">):</span>\n        <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">        Rewrites the proxy headers so that only the most</span>\n<span class=\"sd\">        recent proxy is used.</span>\n<span class=\"sd\">        &quot;&quot;&quot;</span>\n        <span class=\"k\">for</span> field <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span>FORWARDED_FOR_FIELDS<span class=\"p\">:</span>\n            <span class=\"k\">if</span> field <span class=\"ow\">in</span> request<span class=\"o\">.</span>META<span class=\"p\">:</span>\n                <span class=\"k\">if</span> <span class=\"s2\">&quot;,&quot;</span> <span class=\"ow\">in</span> request<span class=\"o\">.</span>META<span class=\"p\">[</span>field<span class=\"p\">]:</span>\n                    parts <span class=\"o\">=</span> request<span class=\"o\">.</span>META<span class=\"p\">[</span>field<span class=\"p\">]</span><span class=\"o\">.</span>split<span class=\"p\">(</span><span class=\"s2\">&quot;,&quot;</span><span class=\"p\">)</span>\n                    request<span class=\"o\">.</span>META<span class=\"p\">[</span>field<span class=\"p\">]</span> <span class=\"o\">=</span> parts<span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"o\">.</span>strip<span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span>get_response<span class=\"p\">(</span>request<span class=\"p\">)</span>\n</code></pre></div>\n<p>This middleware should be positioned before any other middleware that\nrelies on the value of <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_host\" title=\"django.http.HttpRequest.get_host\"><code class=\"xref py py-meth docutils literal notranslate\">get_host()</code></a> -- for instance,\n<a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.middleware.common.CommonMiddleware\" title=\"django.middleware.common.CommonMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">CommonMiddleware</code></a> or\n<a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware\" title=\"django.middleware.csrf.CsrfViewMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">CsrfViewMiddleware</code></a>.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_port\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">get_port</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_port\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストの元となったポートを、 <code class=\"docutils literal notranslate\">HTTP_X_FORWARDED_PORT</code> と <code class=\"docutils literal notranslate\">SERVER_PORT</code> の <code class=\"docutils literal notranslate\">META</code> 変数から、その順に使用して情報を取得し返します (ただし、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-USE_X_FORWARDED_PORT\"><code class=\"xref std std-setting docutils literal notranslate\">USE_X_FORWARDED_PORT</code></a> が有効になっている場合)。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_full_path\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">get_full_path</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_full_path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>必要に応じて、 <code class=\"docutils literal notranslate\">path</code> にクエリ文字列を追加して返します。</p>\n<p>例: <code class=\"docutils literal notranslate\">&quot;/minfo/music/bands/the_beatles/?print=true&quot;</code></p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_full_path_info\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">get_full_path_info</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_full_path_info\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.http.HttpRequest.get_full_path\" title=\"django.http.HttpRequest.get_full_path\"><code class=\"xref py py-meth docutils literal notranslate\">get_full_path()</code></a> と似ていますが、 <a class=\"reference internal\" href=\"#django.http.HttpRequest.path\" title=\"django.http.HttpRequest.path\"><code class=\"xref py py-attr docutils literal notranslate\">path</code></a> の代わりに <a class=\"reference internal\" href=\"#django.http.HttpRequest.path_info\" title=\"django.http.HttpRequest.path_info\"><code class=\"xref py py-attr docutils literal notranslate\">path_info</code></a> を使用します。</p>\n<p>例: <code class=\"docutils literal notranslate\">&quot;/music/bands/the_beatles/?print=true&quot;</code></p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.build_absolute_uri\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">build_absolute_uri</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">location<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.build_absolute_uri\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">location</code> の絶対URI形式を返します。もし location が指定されていない場合、<code class=\"docutils literal notranslate\">request.get_full_path()</code> が location に設定されます。</p>\n<p>もし場所がすでに絶対 URI である場合、それは変更されません。そうでない場合、このリクエストで利用可能なサーバ変数を使用して絶対 URI が構築されます。例えば:</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=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>build_absolute_uri<span class=\"p\">()</span>\n<span class=\"go\">&#39;https://example.com/music/bands/the_beatles/?print=true&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>build_absolute_uri<span class=\"p\">(</span><span class=\"s2\">&quot;/bands/&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;https://example.com/bands/&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>build_absolute_uri<span class=\"p\">(</span><span class=\"s2\">&quot;https://example2.com/bands/&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;https://example2.com/bands/&#39;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>Mixing HTTP and HTTPS on the same site is discouraged, therefore\n<a class=\"reference internal\" href=\"#django.http.HttpRequest.build_absolute_uri\" title=\"django.http.HttpRequest.build_absolute_uri\"><code class=\"xref py py-meth docutils literal notranslate\">build_absolute_uri()</code></a> will always generate an\nabsolute URI with the same scheme the current request has. If you need\nto redirect users to HTTPS, it's best to let your web server redirect\nall HTTP traffic to HTTPS.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_signed_cookie\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">get_signed_cookie</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">RAISE_ERROR</span></em>, <em class=\"sig-param\">salt<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">max_age<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_signed_cookie\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>署名付きクッキーの値を返します。署名が無効である場合は <code class=\"docutils literal notranslate\">django.core.signing.BadSignature</code> 例外が発生します。<code class=\"docutils literal notranslate\">default</code> 引数を提供した場合、例外は抑制され、代わりにそのデフォルト値が返されます。</p>\n<p>The optional <code class=\"docutils literal notranslate\">salt</code> argument can be used to put the cookie into a\nseparate signature namespace. If supplied, the <code class=\"docutils literal notranslate\">max_age</code> argument will\nbe checked against the signed timestamp attached to the cookie value to\nensure the cookie is not older than <code class=\"docutils literal notranslate\">max_age</code> seconds.</p>\n<p>Cookies signed by older Django versions are accepted by default for\nbackwards compatibility. Set <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-SIGNED_COOKIE_LEGACY_SALT_FALLBACK\"><code class=\"xref std std-setting docutils literal notranslate\">SIGNED_COOKIE_LEGACY_SALT_FALLBACK</code></a>\nto <code class=\"docutils literal notranslate\">False</code> to reject them.</p>\n<p>例:</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=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;Tony&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> salt<span class=\"o\">=</span><span class=\"s2\">&quot;name-salt&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;Tony&#39; # assuming cookie was set using the same salt</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;nonexistent-cookie&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">KeyError: &#39;nonexistent-cookie&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;nonexistent-cookie&quot;</span><span class=\"p\">,</span> <span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;cookie-that-was-tampered-with&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">BadSignature: ...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> max_age<span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">)</span>\n<span class=\"go\">SignatureExpired: Signature age 1677.3839159 &gt; 60 seconds</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_signed_cookie<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"kc\">False</span><span class=\"p\">,</span> max_age<span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">)</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n<p>詳細については、 <a class=\"reference internal\" href=\"/ja/6.0/topics/signing/\"><span class=\"doc\">暗号署名</span></a> を参照してください。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2.15\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2.15</p><p>In older versions, cookies signed with distinct <code class=\"docutils literal notranslate\">(key, salt)</code> pairs\nthat concatenate to the same string could be used interchangeably.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.is_secure\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">is_secure</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.is_secure\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストがセキュアである場合、つまりHTTPSで行われた場合に <code class=\"docutils literal notranslate\">True</code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.get_preferred_type\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">get_preferred_type</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">media_types</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.get_preferred_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p><code class=\"docutils literal notranslate\">Accept</code> ヘッダーに基づいて、 <code class=\"docutils literal notranslate\">media_types</code> の中から優先される MIME タイプを返します。クライアントが指定されたいずれのタイプも受け入れない場合は <code class=\"docutils literal notranslate\">None</code> を返します。</p>\n<p>クライアントが <code class=\"docutils literal notranslate\">Accept</code> ヘッダーとして <code class=\"docutils literal notranslate\">text/html,application/json;q=0.8</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=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_preferred_type<span class=\"p\">([</span><span class=\"s2\">&quot;text/html&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;application/json&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&quot;text/html&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_preferred_type<span class=\"p\">([</span><span class=\"s2\">&quot;application/json&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;text/plain&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&quot;application/json&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_preferred_type<span class=\"p\">([</span><span class=\"s2\">&quot;application/xml&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;text/plain&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">None</span>\n</code></pre></div>\n<p>MIME タイプにパラメーターが含まれている場合、それらも優先されるメディアタイプを判断する際に考慮されます。たとえば、<code class=\"docutils literal notranslate\">Accept</code> ヘッダーが <code class=\"docutils literal notranslate\">text/vcard;version=3.0,text/html;q=0.5</code> の場合、 <code class=\"docutils literal notranslate\">request.get_preferred_type()</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=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_preferred_type<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/vcard; version=4.0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/vcard; version=3.0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/vcard&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/directory&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&quot;text/vcard; version=3.0&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_preferred_type<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/vcard; version=4.0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/html&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&quot;text/html&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>get_preferred_type<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"p\">[</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/vcard; version=4.0&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/vcard&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;text/directory&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n</code></pre></div>\n<p>（コンテンツネゴシエーションの詳細な仕組みについては、 <span class=\"target\" id=\"index-26\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-12.5.1\"><strong>RFC 9110 Section 12.5.1</strong></a> を参照してください。）</p>\n<p>ほとんどのブラウザはデフォルトで <code class=\"docutils literal notranslate\">Accept: */*</code> を送信するため、特に優先順位が指定されません。その場合、<code class=\"docutils literal notranslate\">media_types</code> の最初の項目が返されます。</p>\n<p>API リクエストで明示的に <code class=\"docutils literal notranslate\">Accept</code> ヘッダーを設定すると、そのクライアントに対してのみ異なるコンテンツタイプを返すのに役立ちます。 <code class=\"docutils literal notranslate\">Accept</code> ヘッダーに基づいて異なるコンテンツを返す例については <a class=\"reference internal\" href=\"/ja/6.0/topics/class-based-views/generic-editing/#content-negotiation-example\"><span class=\"std std-ref\">コンテンツネゴシエーションの例</span></a> を参照してください。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>レスポンスが <code class=\"docutils literal notranslate\">Accept</code> ヘッダーの内容によって変わる場合、 Django の <a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#module-django.middleware.cache\" title=\"django.middleware.cache: Middleware for the site-wide cache.\"><code class=\"xref py py-mod docutils literal notranslate\">キャッシュミドルウェア</code></a> などのキャッシュ形式を使用している場合は、レスポンスが適切にキャッシュされるように、ビューを <a class=\"reference internal\" href=\"/ja/6.0/topics/http/decorators/#django.views.decorators.vary.vary_on_headers\" title=\"django.views.decorators.vary.vary_on_headers\"><code class=\"xref py py-func docutils literal notranslate\">vary_on_headers('Accept')</code></a> でデコレートする必要があります。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.accepts\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">accepts</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">mime_type</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.accepts\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストの <code class=\"docutils literal notranslate\">Accept</code> ヘッダが <code class=\"docutils literal notranslate\">mime_type</code> 引数と一致する場合に <code class=\"docutils literal notranslate\">True</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=\"gp\">&gt;&gt;&gt; </span>request<span class=\"o\">.</span>accepts<span class=\"p\">(</span><span class=\"s2\">&quot;text/html&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>大半のブラウザは <code class=\"docutils literal notranslate\">Accept: */*</code> をデフォルトで送信するので、すべてのコンテンツタイプに対して <code class=\"docutils literal notranslate\">True</code> を返します。</p>\n<p><code class=\"docutils literal notranslate\">accepts()</code> を用いて <code class=\"docutils literal notranslate\">Accept</code> ヘッダーに基づき異なるコンテンツを返す例については、 <a class=\"reference internal\" href=\"/ja/6.0/topics/class-based-views/generic-editing/#content-negotiation-example\"><span class=\"std std-ref\">コンテンツネゴシエーションの例</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.read\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">read</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">size<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.read\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.readline\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">readline</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.readline\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.readlines\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">readlines</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.readlines\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpRequest.__iter__\">\n<span class=\"sig-prename descclassname\">HttpRequest.</span><span class=\"sig-name descname\">__iter__</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpRequest.__iter__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">HttpRequest</code> インスタンスから読み取るためのファイルライクなインターフェースを実装するメソッドです。これにより、着信リクエストをストリーミング形式で消費することが可能になります。一般的な使用例は、大きなXMLペイロードをメモリ内で完全なXMLツリーを構築することなく、繰り返しパーサーで処理する場合です。</p>\n<p>この標準インターフェースを用いると、 <code class=\"docutils literal notranslate\">HttpRequest</code> インスタンスは <a class=\"reference external\" href=\"https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.ElementTree\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">ElementTree</code></a> のようなXMLパーサーに直接渡すことができます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">xml.etree.ElementTree</span> <span class=\"k\">as</span> <span class=\"nn\">ET</span>\n\n<span class=\"k\">for</span> element <span class=\"ow\">in</span> ET<span class=\"o\">.</span>iterparse<span class=\"p\">(</span>request<span class=\"p\">):</span>\n    process<span class=\"p\">(</span>element<span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"querydict-objects\">\n<h2><code class=\"docutils literal notranslate\">QueryDict</code> オブジェクト<a class=\"heading-anchor\" href=\"#querydict-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.http.QueryDict\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">QueryDict</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> オブジェクト内では、<a class=\"reference internal\" href=\"#django.http.HttpRequest.GET\" title=\"django.http.HttpRequest.GET\"><code class=\"xref py py-attr docutils literal notranslate\">GET</code></a> と <a class=\"reference internal\" href=\"#django.http.HttpRequest.POST\" title=\"django.http.HttpRequest.POST\"><code class=\"xref py py-attr docutils literal notranslate\">POST</code></a> 属性は <code class=\"docutils literal notranslate\">django.http.QueryDict</code> のインスタンスです。これは、同一のキーに対する複数の値を扱うためにカスタマイズされた、辞書型に似たクラスです。これが必要なのは、いくつかの HTML (特に <code class=\"docutils literal notranslate\">&lt;select multiple&gt;</code>) が同一キーで複数の値を渡すからです。</p>\n<p><code class=\"docutils literal notranslate\">request.POST</code> や <code class=\"docutils literal notranslate\">request.GET</code> の <code class=\"docutils literal notranslate\">QueryDict</code>は、通常の request/response 内でアクセスするときには編集不可です。編集可能なものを取得するには、<a class=\"reference internal\" href=\"#django.http.QueryDict.copy\" title=\"django.http.QueryDict.copy\"><code class=\"xref py py-meth docutils literal notranslate\">QueryDict.copy()</code></a> を使う必要があります。</p>\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<p><a class=\"reference internal\" href=\"#django.http.QueryDict\" title=\"django.http.QueryDict\"><code class=\"xref py py-class docutils literal notranslate\">QueryDict</code></a> はディクショナリのサブクラスなので、標準的なディクショナリのメソッドを全て実装しています。当てはまらないのはおおむね以下の通りです:</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__init__\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">__init__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">query_string<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">mutable<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">encoding<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__init__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">QueryDict</code>に基づいて <code class=\"docutils literal notranslate\">QueryDict</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=\"gp\">&gt;&gt;&gt; </span>QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;c=3&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QueryDict: {&#39;a&#39;: [&#39;1&#39;, &#39;2&#39;], &#39;c&#39;: [&#39;3&#39;]}&gt;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">query_string</code> が渡されなかった場合は、<code class=\"docutils literal notranslate\">QueryDict</code> 空となります (何のキーや値も持ちません)。</p>\n<p>使用する <code class=\"docutils literal notranslate\">QueryDict</code> のほとんど、特に <code class=\"docutils literal notranslate\">request.POST</code> や <code class=\"docutils literal notranslate\">request.GET</code> における場合、編集不可となっています。自分でインスタンスを生成する場合は、<code class=\"docutils literal notranslate\">__init__()</code> に <code class=\"docutils literal notranslate\">mutable=True</code> を渡すことで編集可能にできます。</p>\n<p>キーとバリューの両方を設定するための文字列は、<code class=\"docutils literal notranslate\">encoding</code> から <code class=\"docutils literal notranslate\">str</code> に変換されます。<code class=\"docutils literal notranslate\">encoding</code> がセットされていない場合、<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> がデフォルトとなります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.fromkeys\">\n<em class=\"property\"><span class=\"k\">classmethod</span> </em><span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">fromkeys</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">iterable</em>, <em class=\"sig-param\">value<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">mutable<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">encoding<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.fromkeys\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>新しい <code class=\"docutils literal notranslate\">QueryDict</code> を作成します。キーは <code class=\"docutils literal notranslate\">iterable</code> で、各値は <code class=\"docutils literal notranslate\">value</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=\"gp\">&gt;&gt;&gt; </span>QueryDict<span class=\"o\">.</span>fromkeys<span class=\"p\">([</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;a&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;b&quot;</span><span class=\"p\">],</span> value<span class=\"o\">=</span><span class=\"s2\">&quot;val&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QueryDict: {&#39;a&#39;: [&#39;val&#39;, &#39;val&#39;], &#39;b&#39;: [&#39;val&#39;]}&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__getitem__\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">__getitem__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__getitem__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたキーに対する最後の値を返します。キーは存在するが値がない場合は空リスト（ <code class=\"docutils literal notranslate\">[]</code> ）を返します。キーが存在しない場合は <code class=\"docutils literal notranslate\">django.utils.datastructures.MultiValueDictKeyError</code> を送出します。（これは Python 標準の <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#KeyError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">KeyError</code></a> のサブクラスなので、単に <code class=\"docutils literal notranslate\">KeyError</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;a=3&quot;</span><span class=\"p\">,</span> mutable<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span><span class=\"fm\">__getitem__</span><span class=\"p\">(</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;3&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span><span class=\"fm\">__setitem__</span><span class=\"p\">(</span><span class=\"s2\">&quot;b&quot;</span><span class=\"p\">,</span> <span class=\"p\">[])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span><span class=\"fm\">__getitem__</span><span class=\"p\">(</span><span class=\"s2\">&quot;b&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__setitem__\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">__setitem__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">value</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__setitem__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定したキーを <code class=\"docutils literal notranslate\">[value]</code> (各要素が <code class=\"docutils literal notranslate\">value</code> のリスト) にセットします。 副作用を持つ他のディクショナリ関数と同様に、編集可能な <code class=\"docutils literal notranslate\">QueryDict</code> (<a class=\"reference internal\" href=\"#django.http.QueryDict.copy\" title=\"django.http.QueryDict.copy\"><code class=\"xref py py-meth docutils literal notranslate\">QueryDict.copy()</code></a> で作成されたものなど) のみで呼び出し可能です.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.__contains__\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">__contains__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.__contains__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定したキーがセットされている場合 <code class=\"docutils literal notranslate\">True</code> を返します。例えば <code class=\"docutils literal notranslate\">if &quot;foo&quot; in request.GET</code> を実行するのと同じです。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.get\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">get</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.get\"><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.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\">__getitem__()</code></a> と同じロジックを使いますが、キーが存在しない場合のデフォルト値をフックします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.setdefault\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">setdefault</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.setdefault\"><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.setdefault\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">dict.setdefault()</code></a> に似ていますが、内部では <a class=\"reference internal\" href=\"#django.http.QueryDict.__setitem__\" title=\"django.http.QueryDict.__setitem__\"><code class=\"xref py py-meth docutils literal notranslate\">__setitem__()</code></a> を使用します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.update\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">update</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other_dict</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.update\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">QueryDict</code> または辞書のどちらかを取ります。 <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.update\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">dict.update()</code></a> と似ていますが、現在の辞書の項目を置き換えるのではなく <em>追加</em> します。例えば:</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&quot;</span><span class=\"p\">,</span> mutable<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>update<span class=\"p\">({</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>getlist<span class=\"p\">(</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[&#39;1&#39;, &#39;2&#39;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"p\">[</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># returns the last</span>\n<span class=\"go\">&#39;2&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.items\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">items</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.items\"><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.items\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">dict.items()</code></a> と似ていますが、これは <a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\">__getitem__()</code></a> と同じ最後の値のロジックを使用し、ビューオブジェクトの代わりにイテレータオブジェクトを返します。例えば:</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;a=3&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span>q<span class=\"o\">.</span>items<span class=\"p\">())</span>\n<span class=\"go\">[(&#39;a&#39;, &#39;3&#39;)]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.values\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">values</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.values\"><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.values\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">dict.values()</code></a> のように、<a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\">__getitem__()</code></a> と同じ最後の値のロジックを使用しますが、ビューオブジェクトの代わりにイテレータを返します。例えば:</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;a=3&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span>q<span class=\"o\">.</span>values<span class=\"p\">())</span>\n<span class=\"go\">[&#39;3&#39;]</span>\n</code></pre></div>\n</dd></dl>\n\n<p>加えて、<code class=\"docutils literal notranslate\">QueryDict</code> は以下のメソッドを持ちます:</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.copy\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">copy</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.copy\"><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/copy.html#copy.deepcopy\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">copy.deepcopy()</code></a> を使用してオブジェクトのコピーを返します。このコピーは、元のオブジェクトがイミュータブルであったとしても、ミュータブルです。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.getlist\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">getlist</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.getlist\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リクエストされたキーのデータのリストを返します。キーが存在しない場合には、 <code class=\"docutils literal notranslate\">default</code> が <code class=\"docutils literal notranslate\">None</code> であれば空のリストを返します。デフォルト値がリストでない限り、リストを返すことが保証されています。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.setlist\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">setlist</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">list_</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.setlist\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたキーを <code class=\"docutils literal notranslate\">list_</code> に設定します ( <a class=\"reference internal\" href=\"#django.http.QueryDict.__setitem__\" title=\"django.http.QueryDict.__setitem__\"><code class=\"xref py py-meth docutils literal notranslate\">__setitem__()</code></a> と異なります)。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.appendlist\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">appendlist</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">item</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.appendlist\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>key に関連付けられた内部リストに項目を追加します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.setlistdefault\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">setlistdefault</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">default_list<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.setlistdefault\"><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.http.QueryDict.setdefault\" title=\"django.http.QueryDict.setdefault\"><code class=\"xref py py-meth docutils literal notranslate\">setdefault()</code></a> に似ていますが、単一の値の代わりに値のリストを取ります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.lists\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">lists</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.lists\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Like <a class=\"reference internal\" href=\"#django.http.QueryDict.items\" title=\"django.http.QueryDict.items\"><code class=\"xref py py-meth docutils literal notranslate\">items()</code></a>, except it includes all values, as a list, for each\nmember of the dictionary. For example:</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;a=3&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>lists<span class=\"p\">()</span>\n<span class=\"go\">[(&#39;a&#39;, [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;])]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.pop\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">pop</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.pop\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたキーに対応する値のリストを返し、それらを辞書から削除します。キーが存在しない場合は <code class=\"docutils literal notranslate\">KeyError</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;a=3&quot;</span><span class=\"p\">,</span> mutable<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>pop<span class=\"p\">(</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[&#39;1&#39;, &#39;2&#39;, &#39;3&#39;]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.popitem\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">popitem</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.popitem\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>辞書の任意のメンバーを削除し (順序の概念がないため)、キーとキーに対するすべての値のリストを含む2値タプルを返します。空の辞書に対して呼び出されると <code class=\"docutils literal notranslate\">KeyError</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=2&amp;a=3&quot;</span><span class=\"p\">,</span> mutable<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>popitem<span class=\"p\">()</span>\n<span class=\"go\">(&#39;a&#39;, [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;])</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.dict\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">dict</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.dict\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">QueryDict</code> の各(key, list)ペアに対して、 <code class=\"docutils literal notranslate\">dict</code> 形式の表現を返します。 <code class=\"docutils literal notranslate\">dict</code> は、リストの中の要素の1つである item に対して、(key, item) のペアを持ちます。これは、 <a class=\"reference internal\" href=\"#django.http.QueryDict.__getitem__\" title=\"django.http.QueryDict.__getitem__\"><code class=\"xref py py-meth docutils literal notranslate\">QueryDict.__getitem__()</code></a> と同じロジックを使用します。</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=1&amp;a=3&amp;a=5&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>dict<span class=\"p\">()</span>\n<span class=\"go\">{&#39;a&#39;: &#39;5&#39;}</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.QueryDict.urlencode\">\n<span class=\"sig-prename descclassname\">QueryDict.</span><span class=\"sig-name descname\">urlencode</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">safe<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.QueryDict.urlencode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>クエリ文字列形式のデータを文字列で返します。例えば：</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span><span class=\"s2\">&quot;a=2&amp;b=3&amp;b=5&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>urlencode<span class=\"p\">()</span>\n<span class=\"go\">&#39;a=2&amp;b=3&amp;b=5&#39;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">safe</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=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> QueryDict<span class=\"p\">(</span>mutable<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"p\">[</span><span class=\"s2\">&quot;next&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;/a&amp;b/&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"o\">.</span>urlencode<span class=\"p\">(</span>safe<span class=\"o\">=</span><span class=\"s2\">&quot;/&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;next=/a%26b/&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"httpresponse-objects\">\n<h2><code class=\"docutils literal notranslate\">HttpResponse</code> オブジェクト<a class=\"heading-anchor\" href=\"#httpresponse-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.http.HttpResponse\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponse</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Django によって自動的に生成される <a class=\"reference internal\" href=\"#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> オブジェクトとは対照的に、<a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> オブジェクトの作成はあなたの責任です。プログラム内に記述されるあらゆるビューは、<a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> をインスタンス化し、データを格納して返す必要があります。</p>\n<p><a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> クラスは <a class=\"reference internal\" href=\"#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\">django.http</code></a> モジュール内に存在します。</p>\n<section id=\"usage\">\n<h3>使い方<a class=\"heading-anchor\" href=\"#usage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"passing-strings\">\n<h4>文字列を渡す<a class=\"heading-anchor\" href=\"#passing-strings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>一般的な使い方としては、ページのコンテンツを文字列、バイト文字列、または <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">memoryview</code></a> として、 <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> コンストラクタに渡します。</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> HttpResponse\n<span class=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">(</span><span class=\"s2\">&quot;Here&#39;s the text of the web page.&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">(</span><span class=\"s2\">&quot;Text only, please.&quot;</span><span class=\"p\">,</span> content_type<span class=\"o\">=</span><span class=\"s2\">&quot;text/plain&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">(</span><span class=\"sa\">b</span><span class=\"s2\">&quot;Bytestrings are also accepted.&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">(</span><span class=\"nb\">memoryview</span><span class=\"p\">(</span><span class=\"sa\">b</span><span class=\"s2\">&quot;Memoryview as well.&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>しかし、内容を段階的に追加したい場合は、 <code class=\"docutils literal notranslate\">response</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"s2\">&quot;&lt;p&gt;Here&#39;s the text of the web page.&lt;/p&gt;&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response<span class=\"o\">.</span>write<span class=\"p\">(</span><span class=\"s2\">&quot;&lt;p&gt;Here&#39;s another paragraph.&lt;/p&gt;&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"passing-iterators\">\n<h4>イテレータを渡す<a class=\"heading-anchor\" href=\"#passing-iterators\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>最後に、文字列ではなくイテレータを <code class=\"docutils literal notranslate\">HttpResponse</code> に渡すこともできます。 <code class=\"docutils literal notranslate\">HttpResponse</code> はイテレータを即座に受け取り、その内容を文字列として保存し、破棄します。ファイルやジェネレータのような <code class=\"docutils literal notranslate\">close()</code> メソッドを持つオブジェクトは、すぐに閉じられます。</p>\n<p>レスポンスに対して、イテレータからクライアントにストリーミングさせる必要がある場合には、代わりに <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> クラスを使う必要があります。</p>\n</section>\n<section id=\"setting-header-fields\">\n<span id=\"id2\"></span><h4>ヘッダーフィールドをセットする<a class=\"heading-anchor\" href=\"#setting-header-fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>レスポンスでヘッダーフィールドを設定または削除するには、 <a class=\"reference internal\" href=\"#django.http.HttpResponse.headers\" title=\"django.http.HttpResponse.headers\"><code class=\"xref py py-attr docutils literal notranslate\">HttpResponse.headers</code></a> を使用してください。</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response<span class=\"o\">.</span>headers<span class=\"p\">[</span><span class=\"s2\">&quot;Age&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mi\">120</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> response<span class=\"o\">.</span>headers<span class=\"p\">[</span><span class=\"s2\">&quot;Age&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>レスポンスを辞書のように扱うことで、ヘッダーを操作することもできます:</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response<span class=\"p\">[</span><span class=\"s2\">&quot;Age&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mi\">120</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">del</span> response<span class=\"p\">[</span><span class=\"s2\">&quot;Age&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>これは <code class=\"docutils literal notranslate\">HttpResponse.headers</code> へのプロキシで、 <code class=\"docutils literal notranslate\">HttpResponse</code> が提供する本来のインタフェースです。</p>\n<p>このインターフェースを使用する際、辞書とは異なり、ヘッダーフィールドが存在しない場合に <code class=\"docutils literal notranslate\">del</code> が <code class=\"docutils literal notranslate\">KeyError</code> を発生させることはありません。</p>\n<p>インスタンス化の際にもヘッダーを設定できます:</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">(</span>headers<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;Age&quot;</span><span class=\"p\">:</span> <span class=\"mi\">120</span><span class=\"p\">})</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">Cache-Control</code> および <code class=\"docutils literal notranslate\">Vary</code> ヘッダーフィールドを設定するには、これらのフィールドが複数のカンマ区切りの値を持ち得るため、 <a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#module-django.utils.cache\" title=\"django.utils.cache: Helper functions for controlling caching.\"><code class=\"xref py py-mod docutils literal notranslate\">django.utils.cache</code></a> から <a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#django.utils.cache.patch_cache_control\" title=\"django.utils.cache.patch_cache_control\"><code class=\"xref py py-func docutils literal notranslate\">patch_cache_control()</code></a> と <a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#django.utils.cache.patch_vary_headers\" title=\"django.utils.cache.patch_vary_headers\"><code class=\"xref py py-func docutils literal notranslate\">patch_vary_headers()</code></a> メソッドを使用することが推奨されます。&quot;patch&quot; メソッドは、ミドルウェアによって追加された他の値が削除されないように保証します。</p>\n<p>HTTP ヘッダフィールドには改行を含めることはできません。改行文字 (CR または LF) を含むヘッダフィールドを設定しようとすると、<code class=\"docutils literal notranslate\">BadHeaderError</code> が発生します。</p>\n</section>\n<section id=\"telling-the-browser-to-treat-the-response-as-a-file-attachment\">\n<h4>レスポンスをファイル添付物として扱うようにブラウザに指示します。<a class=\"heading-anchor\" href=\"#telling-the-browser-to-treat-the-response-as-a-file-attachment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>ブラウザにレスポンスをファイル添付として扱うように指示するためには、<code class=\"docutils literal notranslate\">Content-Type</code> と <code class=\"docutils literal notranslate\">Content-Disposition</code> ヘッダを設定します。例えば、Microsoft Excel スプレッドシートを返す方法は以下のようになります:</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> HttpResponse<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    my_data<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    headers<span class=\"o\">=</span><span class=\"p\">{</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;Content-Type&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;application/vnd.ms-excel&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;Content-Disposition&quot;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;attachment; filename=&quot;foo.xls&quot;&#39;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">},</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">Content-Disposition</code> ヘッダについては Django 固有のものはありませんが、その構文を忘れやすいので、ここに含めています。</p>\n</section>\n</section>\n<section id=\"id3\">\n<h3>属性<a class=\"heading-anchor\" href=\"#id3\"><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.http.HttpResponse.content\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">content</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.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.http.HttpResponse.text\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">text</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>レスポンスの <a class=\"reference internal\" href=\"#django.http.HttpResponse.charset\" title=\"django.http.HttpResponse.charset\"><code class=\"xref py py-attr docutils literal notranslate\">HttpResponse.charset</code></a> （空の場合は <code class=\"docutils literal notranslate\">UTF-8</code> がデフォルト）を用いてデコードした、 <a class=\"reference internal\" href=\"#django.http.HttpResponse.content\" title=\"django.http.HttpResponse.content\"><code class=\"xref py py-attr docutils literal notranslate\">HttpResponse.content</code></a> の文字列表現。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.cookies\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">cookies</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.cookies\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.cookies.html#http.cookies.SimpleCookie\" title=\"(in Python v3.14)\"><code class=\"xref py py-obj docutils literal notranslate\">http.cookies.SimpleCookie</code></a> object holding the cookies included\nin the response.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.headers\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">headers</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.headers\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>大文字小文字を区別しない辞書型オブジェクトで、<code class=\"docutils literal notranslate\">Set-Cookie</code> ヘッダを除くすべてのHTTPヘッダに対するインターフェイスを提供します。 <a class=\"reference internal\" href=\"#setting-header-fields\"><span class=\"std std-ref\">ヘッダーフィールドをセットする</span></a> および <a class=\"reference internal\" href=\"#django.http.HttpResponse.cookies\" title=\"django.http.HttpResponse.cookies\"><code class=\"xref py py-attr docutils literal notranslate\">HttpResponse.cookies</code></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.charset\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">charset</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.charset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>応答がエンコードされる文字セットを示す文字列です。 <code class=\"docutils literal notranslate\">HttpResponse</code> のインスタンス化の際に指定されなかった場合、 <code class=\"docutils literal notranslate\">content_type</code> から抽出され、もしこれが失敗した場合は、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> 設定が使用されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.status_code\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">status_code</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.status_code\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスの <span class=\"target\" id=\"index-27\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-15\"><strong>HTTP ステータスコード</strong></a> 。</p>\n<p><a class=\"reference internal\" href=\"#django.http.HttpResponse.reason_phrase\" title=\"django.http.HttpResponse.reason_phrase\"><code class=\"xref py py-attr docutils literal notranslate\">reason_phrase</code></a> が明示的にセットされていない限り、コンストラクタの外で <code class=\"docutils literal notranslate\">status_code</code> の値を変更すると <code class=\"docutils literal notranslate\">reason_phrase</code> の値も変更されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.reason_phrase\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">reason_phrase</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.reason_phrase\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスの HTTP reason フレーズです。これは <span class=\"target\" id=\"index-28\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-15.1\"><strong>HTTP 標準の</strong></a> デフォルトの reason フレーズを使用します。</p>\n<p><code class=\"docutils literal notranslate\">reason_phrase</code> が明示的に設定されていない場合、 <a class=\"reference internal\" href=\"#django.http.HttpResponse.status_code\" title=\"django.http.HttpResponse.status_code\"><code class=\"xref py py-attr docutils literal notranslate\">status_code</code></a> の値に基づいて決定されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.streaming\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">streaming</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.streaming\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これは常に <code class=\"docutils literal notranslate\">False</code> です。</p>\n<p>この属性は、ミドルウェアが通常のレスポンスとは違う形でストリーミングレスポンスを扱えるようにするために存在しています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.closed\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">closed</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.closed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスが閉じられた場合、<code class=\"docutils literal notranslate\">True</code> となります。</p>\n</dd></dl>\n\n</section>\n<section id=\"id4\">\n<h3>メソッド<a class=\"heading-anchor\" href=\"#id4\"><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.http.HttpResponse.__init__\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">__init__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">content<span class=\"o\">=</span><span class=\"default_value\">b''</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\">200</span></em>, <em class=\"sig-param\">reason<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\">headers<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__init__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたページ内容、コンテンツタイプ、およびヘッダーを持つ <code class=\"docutils literal notranslate\">HttpResponse</code> オブジェクトをインスタンス化します。</p>\n<p><code class=\"docutils literal notranslate\">content</code> は、最も一般的にはイテレータ、バイト文字列、 <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">memoryview</code></a> 、または文字列です。その他の型は、文字列表現をエンコードしてバイト文字列に変換されます。イテレータは文字列またはバイト文字列を返すべきで、それらはレスポンスの内容を形成するために連結されます。</p>\n<p><code class=\"docutils literal notranslate\">content_type</code> は、MIME タイプであり、オプションで文字セットエンコーディングを指定して HTTP <code class=\"docutils literal notranslate\">Content-Type</code> ヘッダを埋めるために使用されます。指定されていない場合、デフォルトでは <code class=\"docutils literal notranslate\">'text/html'</code> と <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> 設定によって形成されます: つまり <code class=\"docutils literal notranslate\">&quot;text/html; charset=utf-8&quot;</code> 。</p>\n<p><code class=\"docutils literal notranslate\">status</code> is the <span class=\"target\" id=\"index-6\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-15\"><strong>HTTP status code</strong></a> for the\nresponse. You can use Python's <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.html#http.HTTPStatus\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">http.HTTPStatus</code></a> for meaningful\naliases, such as <code class=\"docutils literal notranslate\">HTTPStatus.NO_CONTENT</code>.</p>\n<p><code class=\"docutils literal notranslate\">reason</code> は HTTP レスポンスフレーズです。指定しない場合、デフォルトのフレーズが使用されます。</p>\n<p><code class=\"docutils literal notranslate\">charset</code> は、レスポンスがエンコードされる文字セットです。もし指定されていない場合、<code class=\"docutils literal notranslate\">content_type</code> から抽出されます。それが失敗した場合は、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_CHARSET\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_CHARSET</code></a> 設定が使用されます。</p>\n<p><code class=\"docutils literal notranslate\">headers</code> はレスポンス用の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\">dict</code></a> です。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__setitem__\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">__setitem__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">header</em>, <em class=\"sig-param\">value</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__setitem__\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたヘッダ名に指定された値を設定します。 <code class=\"docutils literal notranslate\">header</code> と <code class=\"docutils literal notranslate\">value</code> は共に文字列であるべきです。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__delitem__\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">__delitem__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">header</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__delitem__\"><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 method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.__getitem__\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">__getitem__</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">header</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.__getitem__\"><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 method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.get\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">get</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">header</em>, <em class=\"sig-param\">alternate<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.get\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたヘッダーの値を返します。ヘッダーが存在しない場合は、<code class=\"docutils literal notranslate\">alternate</code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.has_header\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">has_header</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">header</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.has_header\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定された名前のヘッダーが存在するかどうかを大文字小文字を区別せずにチェックし、<code class=\"docutils literal notranslate\">True</code> または <code class=\"docutils literal notranslate\">False</code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.items\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">items</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.items\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスのHTTPヘッダに対して、 <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict.items\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">dict.items()</code></a> のように動作します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.setdefault\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">setdefault</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">header</em>, <em class=\"sig-param\">value</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.setdefault\"><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 method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.set_cookie\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">set_cookie</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">value<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">max_age<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">expires<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">path<span class=\"o\">=</span><span class=\"default_value\">'/'</span></em>, <em class=\"sig-param\">domain<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">secure<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">httponly<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">samesite<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.set_cookie\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>クッキーを設定します。パラメータは、Python標準ライブラリ内の <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.cookies.html#http.cookies.Morsel\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">Morsel</code></a> クッキーオブジェクトと同じです。</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">max_age</code> は <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">timedelta</code></a> オブジェクト、整数秒数、または <code class=\"docutils literal notranslate\">None</code> (デフォルト) である必要があります。これにより、クッキーの有効期限はクライアントのブラウザセッションが終了するまでとなります。 <code class=\"docutils literal notranslate\">expires</code> が指定されていない場合は自動的に計算されます。</p></li>\n<li><p><code class=\"docutils literal notranslate\">expires</code> は、 <code class=\"docutils literal notranslate\">&quot;Wdy, DD-Mon-YY HH:MM:SS GMT&quot;</code> 形式の文字列か、UTCの <code class=\"docutils literal notranslate\">datetime.datetime</code> オブジェクトであるべきです。もし <code class=\"docutils literal notranslate\">expires</code> が <code class=\"docutils literal notranslate\">datetime</code> オブジェクトである場合、 <code class=\"docutils literal notranslate\">max_age</code> が計算されます。</p></li>\n<li><p>クロスドメインのクッキーを設定したい場合は、<code class=\"docutils literal notranslate\">domain</code> を使用してください。例えば、 <code class=\"docutils literal notranslate\">domain=&quot;example.com&quot;</code> とすると、www.example.com、blog.example.com などのドメインから読み取れるクッキーが設定されます。そうでない場合、クッキーは設定したドメインのみから読み取れます。</p></li>\n<li><p><code class=\"docutils literal notranslate\">secure=True</code> を使用すると、リクエストが <code class=\"docutils literal notranslate\">https</code> スキームで行われた場合にのみ、クッキーがサーバーに送信されるようになります。</p></li>\n<li><p>クライアントサイドのJavaScriptがクッキーにアクセスするのを防ぎたい場合は、<code class=\"docutils literal notranslate\">httponly=True</code> を使用してください。</p>\n<p><a class=\"reference external\" href=\"https://owasp.org/www-community/HttpOnly\">HttpOnly</a> は、Set-Cookie HTTP レスポンスヘッダーに含まれるフラグです。これは、クッキーの <span class=\"target\" id=\"index-29\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc6265.html#section-4.1.2.6\"><strong>RFC 6265</strong></a> 標準の一部であり、クライアントサイドのスクリプトが保護されたクッキーデータにアクセスするリスクを軽減する有用な方法です。</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">samesite='Strict'</code> や <code class=\"docutils literal notranslate\">samesite='Lax'</code> を使用して、ブラウザにクロスオリジンリクエストを行う際にこのクッキーを送信しないよう指示します。 <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value\">SameSite</a> はすべてのブラウザに対応しているわけではないため、DjangoのCSRF保護の代わりとなるものではありませんが、防御の深度を増すための措置です。</p>\n<p><code class=\"docutils literal notranslate\">samesite='None'</code> (文字列) を使えば、このクッキーが同一サイトおよびクロスサイトのすべてのリクエストに送信されることを明示できます。</p>\n</li>\n</ul>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p><span class=\"target\" id=\"index-30\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc6265.html#section-6.1\"><strong>RFC 6265</strong></a> には、ユーザーエージェントが少なくとも 4096 バイトのクッキーをサポートすべきであると記されています。多くのブラウザでは、これが最大サイズでもあります。Django は 4096 バイトを超えるクッキーを保存しようとした際に例外を発生させませんが、多くのブラウザでは正しくクッキーを設定しないでしょう。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.set_signed_cookie\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">set_signed_cookie</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">value</em>, <em class=\"sig-param\">salt<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">max_age<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">expires<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">path<span class=\"o\">=</span><span class=\"default_value\">'/'</span></em>, <em class=\"sig-param\">domain<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">secure<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">httponly<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">samesite<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.set_signed_cookie\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Like <a class=\"reference internal\" href=\"#django.http.HttpResponse.set_cookie\" title=\"django.http.HttpResponse.set_cookie\"><code class=\"xref py py-meth docutils literal notranslate\">set_cookie()</code></a>, but\n<a class=\"reference internal\" href=\"/ja/6.0/topics/signing/\"><span class=\"doc\">cryptographic signing</span></a> the cookie before setting\nit. Use in conjunction with <a class=\"reference internal\" href=\"#django.http.HttpRequest.get_signed_cookie\" title=\"django.http.HttpRequest.get_signed_cookie\"><code class=\"xref py py-meth docutils literal notranslate\">HttpRequest.get_signed_cookie()</code></a>.\nYou can use the optional <code class=\"docutils literal notranslate\">salt</code> argument to put the cookie into a\nseparate signature namespace, but you will need to remember to pass it to\nthe corresponding\n<a class=\"reference internal\" href=\"#django.http.HttpRequest.get_signed_cookie\" title=\"django.http.HttpRequest.get_signed_cookie\"><code class=\"xref py py-meth docutils literal notranslate\">HttpRequest.get_signed_cookie()</code></a> call.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.delete_cookie\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">delete_cookie</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">key</em>, <em class=\"sig-param\">path<span class=\"o\">=</span><span class=\"default_value\">'/'</span></em>, <em class=\"sig-param\">domain<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">samesite<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.delete_cookie\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたキーを持つクッキーを削除します。キーが存在しない場合は、静かに失敗します。</p>\n<p>クッキーの動作方法により、 <code class=\"docutils literal notranslate\">path</code> と <code class=\"docutils literal notranslate\">domain</code> は <code class=\"docutils literal notranslate\">set_cookie()</code> で使用した値と同じでなければなりません。そうでない場合、クッキーが削除されない可能性があります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.close\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">close</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.close\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This method is called at the end of the request directly by the WSGI\nor ASGI server.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.write\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">write</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">content</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.write\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをファイルライクオブジェクトにします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.flush\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">flush</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.flush\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをファイルライクオブジェクトにします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.tell\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">tell</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.tell\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをファイルライクオブジェクトにします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.getvalue\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">getvalue</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.getvalue\"><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.http.HttpResponse.content\" title=\"django.http.HttpResponse.content\"><code class=\"xref py py-attr docutils literal notranslate\">HttpResponse.content</code></a> の値を返します。このメソッドにより、 <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスはストリームライクオブジェクトになります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.readable\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">readable</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.readable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>常に <code class=\"docutils literal notranslate\">False</code> です。このメソッドは <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをストリームライクオブジェクトにします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.seekable\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">seekable</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.seekable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>常に <code class=\"docutils literal notranslate\">False</code> です。このメソッドは <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをストリームライクオブジェクトにします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.writable\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">writable</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.writable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>常に <code class=\"docutils literal notranslate\">True</code> です。このメソッドは <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをストリームライクオブジェクトにします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponse.writelines\">\n<span class=\"sig-prename descclassname\">HttpResponse.</span><span class=\"sig-name descname\">writelines</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">lines</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponse.writelines\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> インスタンスをストリームライクオブジェクトにします。</p>\n</dd></dl>\n\n</section>\n<section id=\"httpresponse-subclasses\">\n<span id=\"ref-httpresponse-subclasses\"></span><h3><code class=\"docutils literal notranslate\">HttpResponse</code> サブクラス<a class=\"heading-anchor\" href=\"#httpresponse-subclasses\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Djangoには、異なるタイプのHTTPレスポンスを処理するための <code class=\"docutils literal notranslate\">HttpResponse</code> のサブクラスがいくつか含まれています。 <code class=\"docutils literal notranslate\">HttpResponse</code> と同様に、これらのサブクラスは <a class=\"reference internal\" href=\"#module-django.http\" title=\"django.http: Classes dealing with HTTP requests and responses.\"><code class=\"xref py py-mod docutils literal notranslate\">django.http</code></a> に存在します。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseRedirect\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseRedirect</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseRedirect\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>コンストラクタの第1引数は必須で、リダイレクト先のパスを指定します。これは、完全修飾URL（例： <code class=\"docutils literal notranslate\">'https://www.yahoo.com/search/'</code> ）、ドメインを含まない絶対パス（例： <code class=\"docutils literal notranslate\">'/search/'</code> ）、あるいは相対パス（例： <code class=\"docutils literal notranslate\">'search/'</code> ）のいずれでも構いません。最後のケースでは、クライアントのブラウザが現在のパスに基づいて完全なURLを自動的に再構成します。</p>\n<p>コンストラクタはオプションの <code class=\"docutils literal notranslate\">preserve_request</code> キーワード引数を受け付け、既定値は <code class=\"docutils literal notranslate\">False</code> です。この場合、302 ステータスコードのレスポンスが生成されます。 <code class=\"docutils literal notranslate\">preserve_request</code> が <code class=\"docutils literal notranslate\">True</code> の場合は、代わりにステータスコードは 307 になります。</p>\n<p>その他のオプションのコンストラクタ引数については、 <a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> を参照してください。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseRedirect.url\">\n<span class=\"sig-name descname\">url</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseRedirect.url\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この読み取り専用の属性は、レスポンスがリダイレクトするURLを表しています (<code class=\"docutils literal notranslate\">Location</code> レスポンスヘッダに相当します)。</p>\n</dd></dl>\n\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">preserve_request</code> 引数が追加されました。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponsePermanentRedirect\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponsePermanentRedirect</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponsePermanentRedirect\"><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.http.HttpResponseRedirect\" title=\"django.http.HttpResponseRedirect\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponseRedirect</code></a> に似ていますが、 &quot;found&quot; リダイレクト（ステータスコード 302）ではなく恒久的リダイレクト（HTTP ステータスコード 301）を返します。 <code class=\"docutils literal notranslate\">preserve_request=True</code> の場合、レスポンスのステータスコードは 308 になります。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">preserve_request</code> 引数が追加されました。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseNotModified\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseNotModified</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseNotModified\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>コンストラクタは引数を取らず、このレスポンスにはコンテンツを追加すべきではありません。これを使用して、ページがユーザーの最後のリクエスト以降に変更されていないことを指定します(ステータスコード304)。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseBadRequest\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseBadRequest</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseBadRequest\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と似ていますが、ステータスコードとして 400 を使用します。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseNotFound\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseNotFound</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseNotFound\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と似ていますが、404 ステータスコードを使用します。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseForbidden\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseForbidden</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseForbidden\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と似ていますが、403 ステータスコードを使用します。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseNotAllowed\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseNotAllowed</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseNotAllowed\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と似ていますが、ステータスコード 405 を使用します。コンストラクタへの最初の引数は必須です: 許可されているメソッドのリスト (例: <code class=\"docutils literal notranslate\">['GET', 'POST']</code>)。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseGone\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseGone</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseGone\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と似ていますが、410 ステータスコードを使用します。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.http.HttpResponseServerError\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseServerError</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseServerError\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と似ていますが、ステータスコードとして 500 を使用します。</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> のカスタムサブクラスが <code class=\"docutils literal notranslate\">render</code> メソッドを実装している場合、Djangoはそれを <a class=\"reference internal\" href=\"/ja/6.0/ref/template-response/#django.template.response.SimpleTemplateResponse\" title=\"django.template.response.SimpleTemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\">SimpleTemplateResponse</code></a> を模倣しているものとして扱い、 <code class=\"docutils literal notranslate\">render</code> メソッド自体が有効なレスポンスオブジェクトを返さなければなりません。</p>\n</aside>\n<section id=\"custom-response-classes\">\n<h4>カスタムレスポンスクラス<a class=\"heading-anchor\" href=\"#custom-response-classes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>If you find yourself needing a response class that Django doesn't provide, you\ncan create it with the help of <a class=\"reference external\" href=\"https://docs.python.org/3/library/http.html#http.HTTPStatus\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">http.HTTPStatus</code></a>. For example:</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\">http</span> <span class=\"kn\">import</span> HTTPStatus\n<span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> HttpResponse\n\n\n<span class=\"k\">class</span> <span class=\"nc\">HttpResponseNoContent</span><span class=\"p\">(</span>HttpResponse<span class=\"p\">):</span>\n    status_code <span class=\"o\">=</span> HTTPStatus<span class=\"o\">.</span>NO_CONTENT\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"jsonresponse-objects\">\n<h2><code class=\"docutils literal notranslate\">JsonResponse</code> オブジェクト<a class=\"heading-anchor\" href=\"#jsonresponse-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.http.JsonResponse\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">JsonResponse</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">data</em>, <em class=\"sig-param\">encoder<span class=\"o\">=</span><span class=\"default_value\">DjangoJSONEncoder</span></em>, <em class=\"sig-param\">safe<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">json_dumps_params<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.JsonResponse\"><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.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> のサブクラスで、JSONエンコードされたレスポンスを作成するのに役立ちます。このクラスは、いくつかの違いを除き、その基底クラスからほとんどの動作を継承しています:</p>\n<p>デフォルトの <code class=\"docutils literal notranslate\">Content-Type</code> ヘッダーは <em class=\"mimetype\">application/json</em> に設定されています。</p>\n<p>最初のパラメーター <code class=\"docutils literal notranslate\">data</code> は、<code class=\"docutils literal notranslate\">dict</code> インスタンスであるべきです。<code class=\"docutils literal notranslate\">safe</code> パラメーターが <code class=\"docutils literal notranslate\">False</code> に設定されている場合 (下記参照)、これはどんな JSON シリアライズ可能オブジェクトでも可能です。</p>\n<p><code class=\"docutils literal notranslate\">encoder</code> のデフォルトは <a class=\"reference internal\" href=\"/ja/6.0/topics/serialization/#django.core.serializers.json.DjangoJSONEncoder\" title=\"django.core.serializers.json.DjangoJSONEncoder\"><code class=\"xref py py-class docutils literal notranslate\">django.core.serializers.json.DjangoJSONEncoder</code></a> で、このエンコーダーがデータのシリアライズに使用されます。このシリアライザについての詳細は、<a class=\"reference internal\" href=\"/ja/6.0/topics/serialization/#serialization-formats-json\"><span class=\"std std-ref\">JSON のシリアライズ</span></a> を参照してください。</p>\n<p><code class=\"docutils literal notranslate\">safe</code> ブールパラメータのデフォルト値は <code class=\"docutils literal notranslate\">True</code> です。もし <code class=\"docutils literal notranslate\">False</code> に設定されている場合、任意のオブジェクトをシリアライズのために渡すことができます（そうでなければ、 <code class=\"docutils literal notranslate\">dict</code> インスタンスのみが許可されます）。<code class=\"docutils literal notranslate\">safe</code> が <code class=\"docutils literal notranslate\">True</code> であり、非 <code class=\"docutils literal notranslate\">dict</code> オブジェクトが第一引数として渡された場合、 <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#TypeError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">TypeError</code></a> が発生します。</p>\n<p><code class=\"docutils literal notranslate\">json_dumps_params</code> パラメーターは、レスポンス生成に使用される <code class=\"docutils literal notranslate\">json.dumps()</code> 呼び出しに渡すキーワード引数の辞書です。</p>\n</dd></dl>\n\n<section id=\"id5\">\n<h3>使い方<a class=\"heading-anchor\" href=\"#id5\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>一般的な使用方法は以下のようになります:</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> JsonResponse\n<span class=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> JsonResponse<span class=\"p\">({</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>response<span class=\"o\">.</span>content\n<span class=\"go\">b&#39;{&quot;foo&quot;: &quot;bar&quot;}&#39;</span>\n</code></pre></div>\n<section id=\"serializing-non-dictionary-objects\">\n<h4>辞書以外のオブジェクトのシリアライズ<a class=\"heading-anchor\" href=\"#serializing-non-dictionary-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\">dict</code> 以外のオブジェクトをシリアライズする場合、 <code class=\"docutils literal notranslate\">safe</code> パラメータを <code class=\"docutils literal notranslate\">False</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> JsonResponse<span class=\"p\">([</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">],</span> safe<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">safe=False</code> を指定しなかった場合、<a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#TypeError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">TypeError</code></a> が発生します。</p>\n<p><code class=\"docutils literal notranslate\">dict</code> オブジェクトに基づいた API は、より拡張性が高く、柔軟性があり、前方互換性の維持が容易になります。したがって、JSON エンコードされたレスポンスでは非 dict オブジェクトの使用は避けるべきです。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>Before the <a class=\"reference external\" href=\"https://262.ecma-international.org/5.1/#sec-11.1.4\">5th edition of ECMAScript</a> it was possible to\npoison the JavaScript <code class=\"docutils literal notranslate\">Array</code> constructor. For this reason, Django does\nnot allow passing non-dict objects to the\n<a class=\"reference internal\" href=\"#django.http.JsonResponse\" title=\"django.http.JsonResponse\"><code class=\"xref py py-class docutils literal notranslate\">JsonResponse</code></a> constructor by default. However, most\nmodern browsers implement ECMAScript 5 which removes this attack vector.\nTherefore it is possible to disable this security precaution.</p>\n</aside>\n</section>\n<section id=\"changing-the-default-json-encoder\">\n<h4>デフォルトのJSONエンコーダーを変更する<a class=\"heading-anchor\" href=\"#changing-the-default-json-encoder\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>異なるJSONエンコーダークラスを使用する必要がある場合は、コンストラクターメソッドに <code class=\"docutils literal notranslate\">encoder</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=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> JsonResponse<span class=\"p\">(</span>data<span class=\"p\">,</span> encoder<span class=\"o\">=</span>MyJSONEncoder<span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"streaminghttpresponse-objects\">\n<span id=\"httpresponse-streaming\"></span><h2><code class=\"docutils literal notranslate\">StreamingHttpResponse</code> オブジェクト<a class=\"heading-anchor\" href=\"#streaminghttpresponse-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.http.StreamingHttpResponse\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">StreamingHttpResponse</span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> クラスは、Djangoからブラウザへのレスポンスをストリーミングするために使用されます。</p>\n<aside class=\"admonition-advanced-usage admonition\" role=\"note\">\n<p class=\"admonition-title\">高度な使用法</p>\n<p><a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> はやや高度です。アプリケーションを WSGI で同期的に、あるいは ASGI で非同期的に提供するかを知り、使用方法を適切に調整することが重要です。</p>\n<p>これらの注意点を注意深く読んでください。</p>\n</aside>\n<p>WSGI 下での <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> の使用例としては、レスポンスの生成に時間がかかりすぎる場合やメモリを大量に使用する場合にコンテンツをストリーミングすることが挙げられます。例えば、<a class=\"reference internal\" href=\"/ja/6.0/howto/outputting-csv/#streaming-csv-files\"><span class=\"std std-ref\">大きなCSVファイルを生成する場合</span></a> に役立ちます。</p>\n<p>しかしながら、これを行う際にはパフォーマンスを考慮する必要があります。WSGIの下でのDjangoは、短期間のリクエストのために設計されています。ストリーミングレスポンスは、レスポンスの全期間にわたってワーカープロセスを占有します。これにより、パフォーマンスが低下する可能性があります。</p>\n<p>一般的に、ストリーミングレスポンスに頼るのではなく、リクエスト/レスポンスサイクルの外で高コストのタスクを行うほうが良いです。</p>\n<p>しかし、ASGI の下で提供される場合、<a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> はI/Oを待っている間に他のリクエストが提供されるのを妨げる必要はありません。これにより、ストリーミングコンテンツのための長時間生存するリクエストや、ロングポーリングやサーバー送信イベントといったパターンの実装の可能性が開かれます。</p>\n<p>ASGI環境下であっても、<a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> は、クライアントにデータを転送する前に全内容がイテレートされることが絶対に必要な状況でのみ使用すべきです。コンテンツにアクセスできないため、多くのミドルウェアが正常に機能しません。例えば、ストリーミングレスポンスには <code class=\"docutils literal notranslate\">ETag</code> や <code class=\"docutils literal notranslate\">Content-Length</code> ヘッダを生成することができません。</p>\n<p><a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> は、若干異なるAPIを特徴とするため、<a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> のサブクラスではありません。しかし、以下に挙げる顕著な違いを除いて、ほぼ同一です。</p>\n<ul>\n<li><p>コンテンツとしてバイト文字列、<a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">memoryview</code></a>、または文字列を生成するイテレータを渡すべきです。WSGI下で提供する場合、これは同期イテレータであるべきです。ASGI下で提供する場合、これは非同期イテレータであるべきです。</p></li>\n<li><p>その内容にアクセスするには、レスポンスオブジェクト自体をイテレートする必要があります。これはクライアントにレスポンスが返されたときのみ発生すべきです。自分でレスポンスをイテレートすべきではありません。</p>\n<p>WSGIでは、レスポンスは同期的にイテレートされます。ASGIでは、レスポンスは非同期的にイテレートされます。(これが、イテレータのタイプが使用しているプロトコルと一致しなければならない理由です。)</p>\n<p>クラッシュを回避するため、間違ったイテレータのタイプは、イテレート中に正しいタイプにマッピングされ、警告が発生します。ただし、これを行うにはイテレータを完全に消費する必要があり、これは全く <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> を使用する目的を果たしません。</p>\n</li>\n<li><p>これは <code class=\"docutils literal notranslate\">content</code> 属性を持ちません。代わりに <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.streaming_content\" title=\"django.http.StreamingHttpResponse.streaming_content\"><code class=\"xref py py-attr docutils literal notranslate\">streaming_content</code></a> 属性があります。これはミドルウェアでレスポンスのイテラブルをラップするために使用できますが、消費されるべきではありません。</p></li>\n<li><p>レスポンスオブジェクトを反復処理する必要があるため、 <code class=\"docutils literal notranslate\">text</code> 属性を持ちません。</p></li>\n<li><p>ファイルライクオブジェクトの <code class=\"docutils literal notranslate\">tell()</code> や <code class=\"docutils literal notranslate\">write()</code> メソッドは使用できません。これらを使用すると例外が発生します。</p></li>\n</ul>\n<p><a class=\"reference internal\" href=\"#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> と <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> は、共通の基底クラス <a class=\"reference internal\" href=\"#django.http.HttpResponseBase\" title=\"django.http.HttpResponseBase\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponseBase</code></a> を持っています。</p>\n<section id=\"id6\">\n<h3>属性<a class=\"heading-anchor\" href=\"#id6\"><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.http.StreamingHttpResponse.streaming_content\">\n<span class=\"sig-prename descclassname\">StreamingHttpResponse.</span><span class=\"sig-name descname\">streaming_content</span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.streaming_content\"><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.http.HttpResponse.charset\" title=\"django.http.HttpResponse.charset\"><code class=\"xref py py-attr docutils literal notranslate\">HttpResponse.charset</code></a> に従ってエンコードされます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.status_code\">\n<span class=\"sig-prename descclassname\">StreamingHttpResponse.</span><span class=\"sig-name descname\">status_code</span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.status_code\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスの <span class=\"target\" id=\"index-31\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-15\"><strong>HTTP ステータスコード</strong></a> 。</p>\n<p><a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.reason_phrase\" title=\"django.http.StreamingHttpResponse.reason_phrase\"><code class=\"xref py py-attr docutils literal notranslate\">reason_phrase</code></a> が明示的にセットされていない限り、コンストラクタの外で <code class=\"docutils literal notranslate\">status_code</code> の値を変更すると <code class=\"docutils literal notranslate\">reason_phrase</code> の値も変更されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.reason_phrase\">\n<span class=\"sig-prename descclassname\">StreamingHttpResponse.</span><span class=\"sig-name descname\">reason_phrase</span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.reason_phrase\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レスポンスの HTTP reason フレーズです。これは <span class=\"target\" id=\"index-32\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-15.1\"><strong>HTTP 標準の</strong></a> デフォルトの reason フレーズを使用します。</p>\n<p><code class=\"docutils literal notranslate\">reason_phrase</code> が明示的に設定されていない場合、 <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.status_code\" title=\"django.http.StreamingHttpResponse.status_code\"><code class=\"xref py py-attr docutils literal notranslate\">status_code</code></a> の値に基づいて決定されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.streaming\">\n<span class=\"sig-prename descclassname\">StreamingHttpResponse.</span><span class=\"sig-name descname\">streaming</span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.streaming\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これは常に <code class=\"docutils literal notranslate\">True</code> です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.http.StreamingHttpResponse.is_async\">\n<span class=\"sig-prename descclassname\">StreamingHttpResponse.</span><span class=\"sig-name descname\">is_async</span><a class=\"heading-anchor\" href=\"#django.http.StreamingHttpResponse.is_async\"><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.http.StreamingHttpResponse.streaming_content\" title=\"django.http.StreamingHttpResponse.streaming_content\"><code class=\"xref py py-attr docutils literal notranslate\">StreamingHttpResponse.streaming_content</code></a> が非同期イテレータであるかどうかを示す真偽値です。</p>\n<p>これは、 <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse.streaming_content\" title=\"django.http.StreamingHttpResponse.streaming_content\"><code class=\"xref py py-attr docutils literal notranslate\">StreamingHttpResponse.streaming_content</code></a> をラップする必要があるミドルウェアにとって便利です。</p>\n</dd></dl>\n\n</section>\n<section id=\"handling-disconnects\">\n<span id=\"request-response-streaming-disconnect\"></span><h3>切断の取り扱い<a class=\"heading-anchor\" href=\"#handling-disconnects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>クライアントがストリーミングレスポンス中に切断されると、Django はレスポンスを処理しているコルーチンをキャンセルします。リソースの手動クリーンアップを行いたい場合は、<code class=\"docutils literal notranslate\">asyncio.CancelledError</code> をキャッチして行うことができます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">async</span> <span class=\"k\">def</span> <span class=\"nf\">streaming_response</span><span class=\"p\">():</span>\n    <span class=\"k\">try</span><span class=\"p\">:</span>\n        <span class=\"c1\"># Do some work here</span>\n        <span class=\"k\">async</span> <span class=\"k\">for</span> chunk <span class=\"ow\">in</span> my_streaming_iterator<span class=\"p\">():</span>\n            <span class=\"k\">yield</span> chunk\n    <span class=\"k\">except</span> asyncio<span class=\"o\">.</span>CancelledError<span class=\"p\">:</span>\n        <span class=\"c1\"># Handle disconnect</span>\n        <span class=\"o\">...</span>\n        <span class=\"k\">raise</span>\n\n\n<span class=\"k\">async</span> <span class=\"k\">def</span> <span class=\"nf\">my_streaming_view</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"k\">return</span> StreamingHttpResponse<span class=\"p\">(</span>streaming_response<span class=\"p\">())</span>\n</code></pre></div>\n<p>この例は、レスポンスがストリーミングされている間にクライアントの切断をどのように処理するかを示しているだけです。ビュー内で <code class=\"docutils literal notranslate\">StreamingHttpResponse</code> オブジェクトを返す前に長時間実行される操作を行う場合は、ビュー自体で <a class=\"reference internal\" href=\"/ja/6.0/topics/async/#async-handling-disconnect\"><span class=\"std std-ref\">切断を処理する</span></a> 必要があるかもしれません。</p>\n</section>\n</section>\n<section id=\"fileresponse-objects\">\n<h2><code class=\"docutils literal notranslate\">FileResponse</code> オブジェクト<a class=\"heading-anchor\" href=\"#fileresponse-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.http.FileResponse\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FileResponse</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">open_file</em>, <em class=\"sig-param\">as_attachment<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filename<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.FileResponse\"><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.http.FileResponse\" title=\"django.http.FileResponse\"><code class=\"xref py py-class docutils literal notranslate\">FileResponse</code></a> はバイナリファイルに最適化された <a class=\"reference internal\" href=\"#django.http.StreamingHttpResponse\" title=\"django.http.StreamingHttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">StreamingHttpResponse</code></a> のサブクラスです。もし WSGI サーバーが提供していれば <span class=\"target\" id=\"index-33\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-3333/#optional-platform-specific-file-handling\"><strong>wsgi.file_wrapper</strong></a> を使用し、そうでない場合はファイルを小さなチャンクでストリーミングします。</p>\n<p><code class=\"docutils literal notranslate\">as_attachment=True</code> だと、<code class=\"docutils literal notranslate\">Content-Disposition</code> ヘッダーが <code class=\"docutils literal notranslate\">attachment</code> に設定され、ブラウザにファイルをダウンロードするように要求します。それ以外の場合は、ファイル名が利用可能な場合のみ、値が <code class=\"docutils literal notranslate\">inline</code> （ブラウザのデフォルト値）の <code class=\"docutils literal notranslate\">Content-Disposition</code> ヘッダーが設定されます。</p>\n<p>もし <code class=\"docutils literal notranslate\">open_file</code> に名前がない、または <code class=\"docutils literal notranslate\">open_file</code> の名前が適切でない場合は、<code class=\"docutils literal notranslate\">filename</code> パラメータを使用してカスタムファイル名を提供してください。<code class=\"docutils literal notranslate\">io.BytesIO</code> のようなファイルライクオブジェクトを渡す場合、それを <code class=\"docutils literal notranslate\">FileResponse</code> に渡す前に <code class=\"docutils literal notranslate\">seek()</code> を行うのはあなたの仕事です。</p>\n<p><code class=\"docutils literal notranslate\">open_file</code> の内容から推測できる場合、 <code class=\"docutils literal notranslate\">Content-Length</code> ヘッダーは自動的に設定されます。</p>\n<p><code class=\"docutils literal notranslate\">Content-Type</code> ヘッダーは、<code class=\"docutils literal notranslate\">filename</code> や <code class=\"docutils literal notranslate\">open_file</code> の名前から推測できる場合には自動的に設定されます。</p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">FileResponse</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=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> FileResponse\n<span class=\"gp\">&gt;&gt;&gt; </span>response <span class=\"o\">=</span> FileResponse<span class=\"p\">(</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">&quot;myfile.png&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;rb&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>ファイルは自動的に閉じられるため、コンテキストマネージャーで開かないでください。</p>\n<aside class=\"admonition-use-under-asgi admonition\" role=\"note\">\n<p class=\"admonition-title\">ASGI における使用</p>\n<p>PythonのファイルAPIは同期的です。これは、ファイルをASGI下で提供するためには、ファイルを完全に消費しなければならないことを意味します。</p>\n<p>非同期にファイルをストリーミングするには、<a class=\"reference external\" href=\"https://github.com/Tinche/aiofiles\">aiofiles</a> のような非同期ファイルAPIを提供するサードパーティパッケージを使用する必要があります。</p>\n</aside>\n<section id=\"id7\">\n<h3>メソッド<a class=\"heading-anchor\" href=\"#id7\"><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.http.FileResponse.set_headers\">\n<span class=\"sig-prename descclassname\">FileResponse.</span><span class=\"sig-name descname\">set_headers</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">open_file</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.http.FileResponse.set_headers\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このメソッドはレスポンス初期化中に自動的に呼び出され、<code class=\"docutils literal notranslate\">open_file</code> に応じてさまざまなヘッダー (<code class=\"docutils literal notranslate\">Content-Length</code>、<code class=\"docutils literal notranslate\">Content-Type</code>、および <code class=\"docutils literal notranslate\">Content-Disposition</code>) を設定します。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"httpresponsebase-class\">\n<h2><code class=\"docutils literal notranslate\">HttpResponseBase</code> クラス<a class=\"heading-anchor\" href=\"#httpresponsebase-class\"><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.http.HttpResponseBase\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">HttpResponseBase</span><a class=\"heading-anchor\" href=\"#django.http.HttpResponseBase\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.http.HttpResponseBase\" title=\"django.http.HttpResponseBase\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponseBase</code></a> クラスは、Django のすべてのレスポンスに共通です。直接レスポンスを作成するために使用すべきではありませんが、型チェックの際に役立つことがあります。</p>\n</section>","rootId":"module-django.http","toc":[{"title":"簡単な概要","anchor":"quick-overview","children":[]},{"title":"HttpRequest オブジェクト","anchor":"httprequest-objects","children":[{"title":"属性","anchor":"attributes","children":[]},{"title":"アプリケーションコードがセットする属性","anchor":"attributes-set-by-application-code","children":[]},{"title":"ミドルウェアが設定する属性","anchor":"attributes-set-by-middleware","children":[]},{"title":"メソッド","anchor":"methods","children":[]}]},{"title":"QueryDict オブジェクト","anchor":"querydict-objects","children":[{"title":"メソッド","anchor":"id1","children":[]}]},{"title":"HttpResponse オブジェクト","anchor":"httpresponse-objects","children":[{"title":"使い方","anchor":"usage","children":[{"title":"文字列を渡す","anchor":"passing-strings","children":[]},{"title":"イテレータを渡す","anchor":"passing-iterators","children":[]},{"title":"ヘッダーフィールドをセットする","anchor":"setting-header-fields","children":[]},{"title":"レスポンスをファイル添付物として扱うようにブラウザに指示します。","anchor":"telling-the-browser-to-treat-the-response-as-a-file-attachment","children":[]}]},{"title":"属性","anchor":"id3","children":[]},{"title":"メソッド","anchor":"id4","children":[]},{"title":"HttpResponse サブクラス","anchor":"httpresponse-subclasses","children":[{"title":"カスタムレスポンスクラス","anchor":"custom-response-classes","children":[]}]}]},{"title":"JsonResponse オブジェクト","anchor":"jsonresponse-objects","children":[{"title":"使い方","anchor":"id5","children":[{"title":"辞書以外のオブジェクトのシリアライズ","anchor":"serializing-non-dictionary-objects","children":[]},{"title":"デフォルトのJSONエンコーダーを変更する","anchor":"changing-the-default-json-encoder","children":[]}]}]},{"title":"StreamingHttpResponse オブジェクト","anchor":"streaminghttpresponse-objects","children":[{"title":"属性","anchor":"id6","children":[]},{"title":"切断の取り扱い","anchor":"handling-disconnects","children":[]}]},{"title":"FileResponse オブジェクト","anchor":"fileresponse-objects","children":[{"title":"メソッド","anchor":"id7","children":[]}]},{"title":"HttpResponseBase クラス","anchor":"httpresponsebase-class","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/6.0/ref/"}],"prev":{"docname":"ref/paginator","title":"ページ分割 (Paginator)","url":"/ja/6.0/ref/paginator/"},"next":{"docname":"ref/schema-editor","title":"SchemaEditor","url":"/ja/6.0/ref/schema-editor/"},"formats":{"html":"/ja/6.0/ref/request-response/","markdown":"/ja/6.0/ref/request-response.md","json":"/ja/6.0/ref/request-response.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/request-response.txt","official":"https://docs.djangoproject.com/ja/6.0/ref/request-response/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}