{"title":"django.urls ユーティリティ関数","version":"5.1","locale":"ja","docname":"ref/urlresolvers","url":"/ja/5.1/ref/urlresolvers/","canonical":"https://djangodocs.dev/ja/5.1/ref/urlresolvers/","summary":"コード内で url テンプレートタグと似たような機能を使用する必要がある場合、Django は次の関数を提供しています.","html":"<span id=\"django-urls-utility-functions\"></span><h1><code class=\"docutils literal notranslate\">django.urls</code> ユーティリティ関数<a class=\"heading-anchor\" href=\"#module-django.urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"reverse\">\n<h2><code class=\"docutils literal notranslate\">reverse()</code><a class=\"heading-anchor\" href=\"#reverse\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>コード内で <a class=\"reference internal\" href=\"/ja/5.1/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\">url</code></a> テンプレートタグと似たような機能を使用する必要がある場合、Django は次の関数を提供しています:</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.reverse\">\n<span class=\"sig-name descname\">reverse</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">viewname</em>, <em class=\"sig-param\">urlconf<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">args<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">kwargs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">current_app<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.reverse\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">viewname</code> は <a class=\"reference internal\" href=\"/ja/5.1/topics/http/urls/#naming-url-patterns\"><span class=\"std std-ref\">URL パターン名</span></a> または呼び出し可能なビューオブジェクトのいずれかを指定できます。例えば、以下の <code class=\"docutils literal notranslate\">url</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=\"kn\">from</span> <span class=\"nn\">news</span> <span class=\"kn\">import</span> views\n\npath<span class=\"p\">(</span><span class=\"s2\">&quot;archive/&quot;</span><span class=\"p\">,</span> views<span class=\"o\">.</span>archive<span class=\"p\">,</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;news-archive&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>URL を逆引きするために、以下の方法を使用できます：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># using the named URL</span>\nreverse<span class=\"p\">(</span><span class=\"s2\">&quot;news-archive&quot;</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># passing a callable object</span>\n<span class=\"c1\"># (This is discouraged because you can&#39;t reverse namespaced views this way.)</span>\n<span class=\"kn\">from</span> <span class=\"nn\">news</span> <span class=\"kn\">import</span> views\n\nreverse<span class=\"p\">(</span>views<span class=\"o\">.</span>archive<span class=\"p\">)</span>\n</code></pre></div>\n<p>URLが引数を受け入れる場合は、 <code class=\"docutils literal notranslate\">args</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=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> reverse\n\n\n<span class=\"k\">def</span> <span class=\"nf\">myview</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"k\">return</span> HttpResponseRedirect<span class=\"p\">(</span>reverse<span class=\"p\">(</span><span class=\"s2\">&quot;arch-summary&quot;</span><span class=\"p\">,</span> args<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mi\">1945</span><span class=\"p\">]))</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">kwargs</code> を <code class=\"docutils literal notranslate\">args</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>reverse<span class=\"p\">(</span><span class=\"s2\">&quot;admin:app_list&quot;</span><span class=\"p\">,</span> kwargs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;app_label&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;auth&quot;</span><span class=\"p\">})</span>\n<span class=\"go\">&#39;/admin/auth/&#39;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">args</code> と <code class=\"docutils literal notranslate\">kwargs</code> を同時に <code class=\"docutils literal notranslate\">reverse()</code> に渡すことはできません。</p>\n<p>一致するものが見つからない場合、<code class=\"docutils literal notranslate\">reverse()</code> は <a class=\"reference internal\" href=\"/ja/5.1/ref/exceptions/#django.urls.NoReverseMatch\" title=\"django.urls.NoReverseMatch\"><code class=\"xref py py-class docutils literal notranslate\">NoReverseMatch</code></a> 例外を発生させます。</p>\n<p><code class=\"docutils literal notranslate\">reverse()</code> 関数は、URLの正規表現パターンの多くを逆引きできますが、すべてを逆引きできるわけではありません。現時点での主な制限は、パターンに垂直バー <code class=\"docutils literal notranslate\">(“|”)</code> 文字を使用して選択肢を含めることができないということです。そのようなパターンを使用して受信URLに対してマッチングし、それらをビューに送ることは問題なく行えますが、そのようなパターンを逆引きすることはできません。</p>\n<p><code class=\"docutils literal notranslate\">current_app</code> 引数は、現在実行中のビューが属しているアプリケーションを指示するヒントをリゾルバに提供することを可能にします。この <code class=\"docutils literal notranslate\">current_app</code> 引数は、特定のアプリケーションインスタンス上のURLに対してアプリケーションの名前空間を解決するためのヒントとして使用されます。これは、 <a class=\"reference internal\" href=\"/ja/5.1/topics/http/urls/#topics-http-reversing-url-namespaces\"><span class=\"std std-ref\">名前空間化された URL の解決順序</span></a> に従っています。</p>\n<p><code class=\"docutils literal notranslate\">urlconf</code> 引数は、リバースに使用する URL パターンを含む URLconf モジュールです。デフォルトでは、現在のスレッドのルート URLconf が使用されます。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\">reverse()</code> によって返される文字列は、すでに <a class=\"reference internal\" href=\"/ja/5.1/ref/unicode/#uri-and-iri-handling\"><span class=\"std std-ref\">URL エンコードされています</span></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>reverse<span class=\"p\">(</span><span class=\"s2\">&quot;cities&quot;</span><span class=\"p\">,</span> args<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;Orléans&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&#39;.../Orl%C3%A9ans/&#39;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">reverse()</code> の出力に対してさらにエンコーディング（例えば <a class=\"reference external\" href=\"https://docs.python.org/3/library/urllib.parse.html#urllib.parse.quote\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">urllib.parse.quote()</code></a> など）を適用すると、望ましくない結果が生じることがあります。</p>\n</aside>\n</section>\n<section id=\"reverse-lazy\">\n<h2><code class=\"docutils literal notranslate\">reverse_lazy()</code><a class=\"heading-anchor\" href=\"#reverse-lazy\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"#reverse\">reverse()</a> の遅延評価バージョンです。</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.reverse_lazy\">\n<span class=\"sig-name descname\">reverse_lazy</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">viewname</em>, <em class=\"sig-param\">urlconf<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">args<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">kwargs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">current_app<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.reverse_lazy\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>プロジェクトの URLConf がロードされる前に、URL 反転を使用する必要がある場合に役立ちます。この関数が必要となる一般的なケースには以下のようなものがあります：</p>\n<ul class=\"simple\">\n<li><p>クラスベースのジェネリックビューの <code class=\"docutils literal notranslate\">url</code> 属性に逆引きURLを提供する場合。</p></li>\n<li><p>デコレータ（たとえば <a class=\"reference internal\" href=\"/ja/5.1/topics/auth/default/#django.contrib.auth.decorators.permission_required\" title=\"django.contrib.auth.decorators.permission_required\"><code class=\"xref py py-func docutils literal notranslate\">django.contrib.auth.decorators.permission_required()</code></a> デコレータの <code class=\"docutils literal notranslate\">login_url</code> 引数など）への URL の逆引きを提供する場合。</p></li>\n<li><p>関数のシグネチャでパラメータのデフォルト値として逆引きURLを提供する場合。</p></li>\n</ul>\n</section>\n<section id=\"resolve\">\n<h2><code class=\"docutils literal notranslate\">resolve()</code><a class=\"heading-anchor\" href=\"#resolve\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\">resolve()</code> 関数は、URL パスを対応するビュー関数に解決するために使用できます。次のシグネチャを持っています:</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.resolve\">\n<span class=\"sig-name descname\">resolve</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">path</em>, <em class=\"sig-param\">urlconf<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.resolve\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">path</code> は解決したい URL パスです。 <a class=\"reference internal\" href=\"#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\">reverse()</code></a> と同じように、 <code class=\"docutils literal notranslate\">urlconf</code> パラメータについて心配する必要はありません。この関数は、解決された URL に関するさまざまなメタデータにアクセスを許可する <a class=\"reference internal\" href=\"#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\">ResolverMatch</code></a> オブジェクトを返します。</p>\n<p>URL が解決しない場合、その関数は <a class=\"reference internal\" href=\"/ja/5.1/ref/exceptions/#django.urls.Resolver404\" title=\"django.urls.Resolver404\"><code class=\"xref py py-exc docutils literal notranslate\">Resolver404</code></a> 例外を発生させます（ <a class=\"reference internal\" href=\"/ja/5.1/topics/http/views/#django.http.Http404\" title=\"django.http.Http404\"><code class=\"xref py py-class docutils literal notranslate\">Http404</code></a> のサブクラスです）。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ResolverMatch</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.func\">\n<span class=\"sig-name descname\">func</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.func\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL を提供するために使用されるビュー関数</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.args\">\n<span class=\"sig-name descname\">args</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.args\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL からパースされた、ビュー関数に渡される引数。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.kwargs\">\n<span class=\"sig-name descname\">kwargs</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.kwargs\"><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.urls.ResolverMatch.captured_kwargs\" title=\"django.urls.ResolverMatch.captured_kwargs\"><code class=\"xref py py-attr docutils literal notranslate\">captured_kwargs</code></a> と <a class=\"reference internal\" href=\"#django.urls.ResolverMatch.extra_kwargs\" title=\"django.urls.ResolverMatch.extra_kwargs\"><code class=\"xref py py-attr docutils literal notranslate\">extra_kwargs</code></a> です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.captured_kwargs\">\n<span class=\"sig-name descname\">captured_kwargs</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.captured_kwargs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL から解析された、ビュー関数に渡されるキーワード引数がキャプチャされます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.extra_kwargs\">\n<span class=\"sig-name descname\">extra_kwargs</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.extra_kwargs\"><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.urls.ResolverMatch.url_name\">\n<span class=\"sig-name descname\">url_name</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.url_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL に一致する URL パターンの名前。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.route\">\n<span class=\"sig-name descname\">route</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.route\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>一致するURLパターンのルート。</p>\n<p>例えば、<code class=\"docutils literal notranslate\">path('users/&lt;id&gt;/', ...)</code> がマッチするパターンである場合、 <code class=\"docutils literal notranslate\">route</code> には <code class=\"docutils literal notranslate\">'users/&lt;id&gt;/'</code> が含まれます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.tried\">\n<span class=\"sig-name descname\">tried</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.tried\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL が一致するか利用可能なパターンが尽きる前に試みられた URL パターンのリストです。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.app_name\">\n<span class=\"sig-name descname\">app_name</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.app_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URLに一致するURLパターンのアプリケーション名前空間です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.app_names\">\n<span class=\"sig-name descname\">app_names</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.app_names\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL にマッチする URL パターンの完全なアプリケーション名前空間内の個別の名前空間コンポーネントのリストです。例えば、もし <code class=\"docutils literal notranslate\">app_name</code> が <code class=\"docutils literal notranslate\">'foo:bar'</code> である場合、<code class=\"docutils literal notranslate\">app_names</code> は <code class=\"docutils literal notranslate\">['foo', 'bar']</code> になります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.namespace\">\n<span class=\"sig-name descname\">namespace</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.namespace\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>対応するURLのURLパターンのインスタンス名前空間。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.namespaces\">\n<span class=\"sig-name descname\">namespaces</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.namespaces\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL がマッチする URL パターンの完全なインスタンス名前空間内の個々の名前空間コンポーネントのリストです。つまり、名前空間が <code class=\"docutils literal notranslate\">foo:bar</code> である場合、namespaces は <code class=\"docutils literal notranslate\">['foo', 'bar']</code> になります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.urls.ResolverMatch.view_name\">\n<span class=\"sig-name descname\">view_name</span><a class=\"heading-anchor\" href=\"#django.urls.ResolverMatch.view_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>URL にマッチするビューの名前で、名前空間が存在する場合はその名前空間を含みます。</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>その後、 <a class=\"reference internal\" href=\"#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\">ResolverMatch</code></a> オブジェクトを調査して、URL に一致する URL パターンに関する情報を提供できます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Resolve a URL</span>\nmatch <span class=\"o\">=</span> resolve<span class=\"p\">(</span><span class=\"s2\">&quot;/some/path/&quot;</span><span class=\"p\">)</span>\n<span class=\"c1\"># Print the URL pattern that matches the URL</span>\n<span class=\"nb\">print</span><span class=\"p\">(</span>match<span class=\"o\">.</span>url_name<span class=\"p\">)</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.urls.ResolverMatch\" title=\"django.urls.ResolverMatch\"><code class=\"xref py py-class docutils literal notranslate\">ResolverMatch</code></a> オブジェクトは、3値タプルに代入することもできます:</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>func<span class=\"p\">,</span> args<span class=\"p\">,</span> kwargs <span class=\"o\">=</span> resolve<span class=\"p\">(</span><span class=\"s2\">&quot;/some/path/&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.urls.resolve\" title=\"django.urls.resolve\"><code class=\"xref py py-func docutils literal notranslate\">resolve()</code></a> の可能な使用例の一つは、リダイレクトする前にビューが <code class=\"docutils literal notranslate\">Http404</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=\"kn\">from</span> <span class=\"nn\">urllib.parse</span> <span class=\"kn\">import</span> urlparse\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> resolve\n<span class=\"kn\">from</span> <span class=\"nn\">django.http</span> <span class=\"kn\">import</span> Http404<span class=\"p\">,</span> HttpResponseRedirect\n\n\n<span class=\"k\">def</span> <span class=\"nf\">myview</span><span class=\"p\">(</span>request<span class=\"p\">):</span>\n    <span class=\"nb\">next</span> <span class=\"o\">=</span> request<span class=\"o\">.</span>META<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"s2\">&quot;HTTP_REFERER&quot;</span><span class=\"p\">,</span> <span class=\"kc\">None</span><span class=\"p\">)</span> <span class=\"ow\">or</span> <span class=\"s2\">&quot;/&quot;</span>\n    response <span class=\"o\">=</span> HttpResponseRedirect<span class=\"p\">(</span><span class=\"nb\">next</span><span class=\"p\">)</span>\n\n    <span class=\"c1\"># modify the request and response as required, e.g. change locale</span>\n    <span class=\"c1\"># and set corresponding locale cookie</span>\n\n    view<span class=\"p\">,</span> args<span class=\"p\">,</span> kwargs <span class=\"o\">=</span> resolve<span class=\"p\">(</span>urlparse<span class=\"p\">(</span><span class=\"nb\">next</span><span class=\"p\">)[</span><span class=\"mi\">2</span><span class=\"p\">])</span>\n    kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;request&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> request\n    <span class=\"k\">try</span><span class=\"p\">:</span>\n        view<span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n    <span class=\"k\">except</span> Http404<span class=\"p\">:</span>\n        <span class=\"k\">return</span> HttpResponseRedirect<span class=\"p\">(</span><span class=\"s2\">&quot;/&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> response\n</code></pre></div>\n</section>\n<section id=\"get-script-prefix\">\n<h2><code class=\"docutils literal notranslate\">get_script_prefix()</code><a class=\"heading-anchor\" href=\"#get-script-prefix\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.urls.get_script_prefix\">\n<span class=\"sig-name descname\">get_script_prefix</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.urls.get_script_prefix\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>通常、アプリケーション内でURLを定義する際には、常に <a class=\"reference internal\" href=\"#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\">reverse()</code></a> を使用すべきです。しかし、アプリケーションがURL階層の一部を自身で構築する場合、時々URLを生成する必要があります。その場合、DjangoプロジェクトのベースURLをそのWebサーバー内で見つける必要があります（通常、 <a class=\"reference internal\" href=\"#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\">reverse()</code></a> がこれを処理します）。そのような場合、 <code class=\"docutils literal notranslate\">get_script_prefix()</code> を呼び出すことができます。これは、DjangoプロジェクトのURLのスクリプトプレフィックス部分を返します。あなたのDjangoプロジェクトがWebサーバーのルートにある場合、これは常に <code class=\"docutils literal notranslate\">&quot;/&quot;</code> です。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>この関数は、リクエスト・レスポンスサイクル中に初期化された値に依存しているため、そのサイクルの外部では <strong>使用できません</strong> 。</p>\n</aside>\n</section>","rootId":"module-django.urls","toc":[{"title":"reverse()","anchor":"reverse","children":[]},{"title":"reverse_lazy()","anchor":"reverse-lazy","children":[]},{"title":"resolve()","anchor":"resolve","children":[]},{"title":"get_script_prefix()","anchor":"get-script-prefix","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/5.1/ref/"}],"prev":{"docname":"ref/unicode","title":"Unicode データ","url":"/ja/5.1/ref/unicode/"},"next":{"docname":"ref/urls","title":"URLconf で使用するための django.urls 関数","url":"/ja/5.1/ref/urls/"},"formats":{"html":"/ja/5.1/ref/urlresolvers/","markdown":"/ja/5.1/ref/urlresolvers.md","json":"/ja/5.1/ref/urlresolvers.json"},"source":"https://github.com/django/django/blob/stable/5.1.x/docs/ref/urlresolvers.txt","official":"https://docs.djangoproject.com/ja/5.1/ref/urlresolvers/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}