{"title":"Pengirim URL","version":"6.1","locale":"id","docname":"topics/http/urls","url":"/id/6.1/topics/http/urls/","canonical":"https://djangodocs.dev/id/6.1/topics/http/urls/","summary":"Bersih, skema URL anggun adalah rincian penting dalam aplikasi jaringan kualitas-tinggi. Django membuat anda merancang URL bagaimanapun anda inginkan, dengan tanpa…","html":"<h1>Pengirim URL<a class=\"heading-anchor\" href=\"#url-dispatcher\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Bersih, skema URL anggun adalah rincian penting dalam aplikasi jaringan kualitas-tinggi. Django membuat anda merancang URL bagaimanapun anda inginkan, dengan tanpa batasan kerangka kerja.</p>\n<p>See <a class=\"reference external\" href=\"https://www.w3.org/Provider/Style/URI\">Cool URIs don't change</a>, by World Wide Web creator Tim Berners-Lee, for\nexcellent arguments on why URLs should be clean and usable.</p>\n<section id=\"overview\">\n<h2>Ikhtisar<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>To design URLs for an app, you create a Python module informally called a\n<strong>URLconf</strong> (URL configuration). This module is pure Python code and is a\nmapping between URL path expressions to Python functions (your views).</p>\n<p>This mapping can be as short or as long as needed. It can reference other\nmappings. And, because it's pure Python code, it can be constructed\ndynamically.</p>\n<p>Django also provides a way to translate URLs according to the active\nlanguage. See the <a class=\"reference internal\" href=\"/id/6.1/topics/i18n/translation/#url-internationalization\"><span class=\"std std-ref\">internationalization documentation</span></a> for more information.</p>\n</section>\n<section id=\"how-django-processes-a-request\">\n<span id=\"id1\"></span><h2>Bagaimana Django mengolah permintaan<a class=\"heading-anchor\" href=\"#how-django-processes-a-request\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>When a user requests a page from your Django-powered site, this is the\nalgorithm the system follows to determine which Python code to execute:</p>\n<ol class=\"arabic simple\">\n<li><p>Django determines the root URLconf module to use. Ordinarily, this is the\nvalue of the <a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a> setting, but if the incoming\n<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> object has a <a class=\"reference internal\" href=\"/id/6.1/ref/request-response/#django.http.HttpRequest.urlconf\" title=\"django.http.HttpRequest.urlconf\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">urlconf</span></code></a>\nattribute (set by middleware), its value will be used in place of the\n<a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a> setting.</p></li>\n<li><p>Django loads that Python module and looks for the variable\n<code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code>. This should be a <a class=\"reference external\" href=\"https://docs.python.org/3/glossary.html#term-sequence\" title=\"(di Python v3.14)\"><span class=\"xref std std-term\">sequence</span></a> of\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.urls.path()</span></code></a> and/or <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.urls.re_path()</span></code></a> instances.</p></li>\n<li><p>Django runs through each URL pattern, in order, and stops at the first\none that matches the requested URL, matching against\n<a class=\"reference internal\" href=\"/id/6.1/ref/request-response/#django.http.HttpRequest.path_info\" title=\"django.http.HttpRequest.path_info\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">path_info</span></code></a>.</p></li>\n<li><p>Once one of the URL patterns matches, Django imports and calls the given\nview, which is a Python function (or a <a class=\"reference internal\" href=\"/id/6.1/topics/class-based-views/\"><span class=\"doc\">class-based view</span></a>). The view gets passed the following\narguments:</p>\n<ul class=\"simple\">\n<li><p>Sebuah instance dari <a class=\"reference internal\" href=\"/id/6.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>.</p></li>\n<li><p>If the matched URL pattern contained no named groups, then the\nmatches from the regular expression are provided as positional arguments.</p></li>\n<li><p>The keyword arguments are made up of any named parts matched by the\npath expression that are provided, overridden by any arguments specified\nin the optional <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> argument to <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.urls.path()</span></code></a> or\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.urls.re_path()</span></code></a>.</p></li>\n</ul>\n</li>\n<li><p>If no URL pattern matches, or if an exception is raised during any\npoint in this process, Django invokes an appropriate\nerror-handling view. See <a class=\"reference internal\" href=\"#error-handling\">Error handling</a> below.</p></li>\n</ol>\n</section>\n<section id=\"example\">\n<h2>Contoh<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ini adalah contoh URLconf:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/2003/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">special_case_2003</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/&lt;int:year&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">year_archive</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/&lt;int:year&gt;/&lt;int:month&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">month_archive</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/&lt;int:year&gt;/&lt;int:month&gt;/&lt;slug:slug&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">article_detail</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Catatan:</p>\n<ul class=\"simple\">\n<li><p>Untuk menangkap nilai dari URL, gunakan kurung sudut.</p></li>\n<li><p>Captured values can optionally include a converter type. For example, use\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;int:name&gt;</span></code> to capture an integer parameter. If a converter isn't\nincluded, any string, excluding a <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code> character, is matched.</p></li>\n<li><p>Tidak perlu menambahkan awalan garis miring, karena setiap URL memilikinya. Sebgai contoh, itu adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">articles</span></code>, bukan <code class=\"docutils literal notranslate\"><span class=\"pre\">/articles</span></code>.</p></li>\n</ul>\n<p>Contoh permintaan:</p>\n<ul class=\"simple\">\n<li><p>Permintaan pada <code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/2005/03/</span></code> akan mencocokkan masukan ketiga dalam list. Django akan memanggil fungsi <code class=\"docutils literal notranslate\"><span class=\"pre\">views.month_archive(permintaan,</span> <span class=\"pre\">year=2005,</span> <span class=\"pre\">month=3)</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/2003/</span></code> would match the first pattern in the list, not the\nsecond one, because the patterns are tested in order, and the first one\nis the first test to pass. Feel free to exploit the ordering to insert\nspecial cases like this. Here, Django would call the function\n<code class=\"docutils literal notranslate\"><span class=\"pre\">views.special_case_2003(request)</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/2003</span></code> would not match any of these patterns, because each\npattern requires that the URL end with a slash.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/2003/03/building-a-django-site/</span></code> would match the final pattern.\nDjango would call the function\n<code class=\"docutils literal notranslate\"><span class=\"pre\">views.article_detail(request,</span> <span class=\"pre\">year=2003,</span> <span class=\"pre\">month=3,</span> <span class=\"pre\">slug=&quot;building-a-django-site&quot;)</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"path-converters\">\n<h2>Perubah jalur<a class=\"heading-anchor\" href=\"#path-converters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Perubah jalur berikut tersedia secara awalan:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code> - Matches any non-empty string, excluding the path separator,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'/'</span></code>. This is the default if a converter isn't included in the expression.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">int</span></code> - Cocok nol atau integer positif apapun. Mengembalikan sebuah <code class=\"docutils literal notranslate\"><span class=\"pre\">int</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">slug</span></code> - Matches any slug string consisting of ASCII letters or numbers,\nplus the hyphen and underscore characters. For example,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">building-your-1st-django-site</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">uuid</span></code> - Matches a formatted UUID. To prevent multiple URLs from mapping to\nthe same page, dashes must be included and letters must be lowercase. For\nexample, <code class=\"docutils literal notranslate\"><span class=\"pre\">075194d3-6885-417e-a8a8-6c931e272f00</span></code>. Returns a\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/uuid.html#uuid.UUID\" title=\"(di Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UUID</span></code></a> instance.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> - Matches any non-empty string, including the path separator,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'/'</span></code>. This allows you to match against a complete URL path rather than\na segment of a URL path as with <code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"registering-custom-path-converters\">\n<span id=\"id2\"></span><h2>Registering custom path converters<a class=\"heading-anchor\" href=\"#registering-custom-path-converters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>For more complex matching requirements, you can define your own path\nconverters.</p>\n<p>A converter is a class that includes the following:</p>\n<ul class=\"simple\">\n<li><p>Atribut kelas <code class=\"docutils literal notranslate\"><span class=\"pre\">regex</span></code>, sebagai string.</p></li>\n<li><p>A <code class=\"docutils literal notranslate\"><span class=\"pre\">to_python(self,</span> <span class=\"pre\">value)</span></code> method, which handles converting the matched\nstring into the type that should be passed to the view function. It should\nraise <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code> if it can't convert the given value. A <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code> is\ninterpreted as no match and as a consequence a 404 response is sent to the\nuser unless another URL pattern matches.</p></li>\n<li><p>A <code class=\"docutils literal notranslate\"><span class=\"pre\">to_url(self,</span> <span class=\"pre\">value)</span></code> method, which handles converting the Python type\ninto a string to be used in the URL. It should raise <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code> if it\ncan't convert the given value. A <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code> is interpreted as no match\nand as a consequence <a class=\"reference internal\" href=\"/id/6.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a> will raise\n<a class=\"reference internal\" href=\"/id/6.1/ref/exceptions/#django.urls.NoReverseMatch\" title=\"django.urls.NoReverseMatch\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NoReverseMatch</span></code></a> unless another URL pattern matches.</p></li>\n</ul>\n<p>Sebagai contoh:</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=\"w\"> </span><span class=\"nc\">FourDigitYearConverter</span><span class=\"p\">:</span>\n    <span class=\"n\">regex</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;[0-9]</span><span class=\"si\">{4}</span><span class=\"s2\">&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">to_python</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"n\">value</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">to_url</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;</span><span class=\"si\">%04d</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"n\">value</span>\n</code></pre></div>\n<p>Register custom converter classes in your URLconf using\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.register_converter\" title=\"django.urls.register_converter\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">register_converter()</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">register_converter</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">converters</span><span class=\"p\">,</span> <span class=\"n\">views</span>\n\n<span class=\"n\">register_converter</span><span class=\"p\">(</span><span class=\"n\">converters</span><span class=\"o\">.</span><span class=\"n\">FourDigitYearConverter</span><span class=\"p\">,</span> <span class=\"s2\">&quot;yyyy&quot;</span><span class=\"p\">)</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/2003/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">special_case_2003</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/&lt;yyyy:year&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">year_archive</span><span class=\"p\">),</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n<section id=\"using-regular-expressions\">\n<h2>Menggunakan regular expression<a class=\"heading-anchor\" href=\"#using-regular-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>If the paths and converters syntax isn't sufficient for defining your URL\npatterns, you can also use regular expressions. To do so, use\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">re_path()</span></code></a> instead of <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a>.</p>\n<p>In Python regular expressions, the syntax for named regular expression groups\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">(?P&lt;name&gt;pattern)</span></code>, where <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> is the name of the group and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">pattern</span></code> is some pattern to match.</p>\n<p>Here's the example URLconf from earlier, rewritten using regular expressions:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span><span class=\"p\">,</span> <span class=\"n\">re_path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/2003/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">special_case_2003</span><span class=\"p\">),</span>\n    <span class=\"n\">re_path</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^articles/(?P&lt;year&gt;[0-9]</span><span class=\"si\">{4}</span><span class=\"s2\">)/$&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">year_archive</span><span class=\"p\">),</span>\n    <span class=\"n\">re_path</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^articles/(?P&lt;year&gt;[0-9]</span><span class=\"si\">{4}</span><span class=\"s2\">)/(?P&lt;month&gt;[0-9]</span><span class=\"si\">{2}</span><span class=\"s2\">)/$&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">month_archive</span><span class=\"p\">),</span>\n    <span class=\"n\">re_path</span><span class=\"p\">(</span>\n        <span class=\"sa\">r</span><span class=\"s2\">&quot;^articles/(?P&lt;year&gt;[0-9]</span><span class=\"si\">{4}</span><span class=\"s2\">)/(?P&lt;month&gt;[0-9]</span><span class=\"si\">{2}</span><span class=\"s2\">)/(?P&lt;slug&gt;[\\w-]+)/$&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">article_detail</span><span class=\"p\">,</span>\n    <span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>This accomplishes roughly the same thing as the previous example, except:</p>\n<ul class=\"simple\">\n<li><p>The exact URLs that will match are slightly more constrained. For example,\nthe year 10000 will no longer match since the year integers are constrained\nto be exactly four digits long.</p></li>\n<li><p>Each captured argument is sent to the view as a string, regardless of what\nsort of match the regular expression makes.</p></li>\n</ul>\n<p>When switching from using <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a> to\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">re_path()</span></code></a> or vice versa, it's particularly important to be\naware that the type of the view arguments may change, and so you may need to\nadapt your views.</p>\n<section id=\"using-unnamed-regular-expression-groups\">\n<h3>Using unnamed regular expression groups<a class=\"heading-anchor\" href=\"#using-unnamed-regular-expression-groups\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>As well as the named group syntax, e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">(?P&lt;year&gt;[0-9]{4})</span></code>, you can\nalso use the shorter unnamed group, e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">([0-9]{4})</span></code>.</p>\n<p>This usage isn't particularly recommended as it makes it easier to accidentally\nintroduce errors between the intended meaning of a match and the arguments\nof the view.</p>\n<p>In either case, using only one style within a given regex is recommended. When\nboth styles are mixed, any unnamed groups are ignored and only named groups are\npassed to the view function.</p>\n</section>\n<section id=\"nested-arguments\">\n<h3>Penjelasan bersarang<a class=\"heading-anchor\" href=\"#nested-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Regular expressions allow nested arguments, and Django will resolve them and\npass them to the view. When reversing, Django will try to fill in all outer\ncaptured arguments, ignoring any nested captured arguments. Consider the\nfollowing URL patterns which optionally take a page argument:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">re_path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">re_path</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^blog/(page-([0-9]+)/)?$&quot;</span><span class=\"p\">,</span> <span class=\"n\">blog_articles</span><span class=\"p\">),</span>  <span class=\"c1\"># bad</span>\n    <span class=\"n\">re_path</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^comments/(?:page-(?P&lt;page_number&gt;[0-9]+)/)?$&quot;</span><span class=\"p\">,</span> <span class=\"n\">comments</span><span class=\"p\">),</span>  <span class=\"c1\"># good</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Both patterns use nested arguments and will resolve: for example,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">blog/page-2/</span></code> will result in a match to <code class=\"docutils literal notranslate\"><span class=\"pre\">blog_articles</span></code> with two\npositional arguments: <code class=\"docutils literal notranslate\"><span class=\"pre\">page-2/</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">2</span></code>. The second pattern for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">comments</span></code> will match <code class=\"docutils literal notranslate\"><span class=\"pre\">comments/page-2/</span></code> with keyword argument\n<code class=\"docutils literal notranslate\"><span class=\"pre\">page_number</span></code> set to 2. The outer argument in this case is a non-capturing\nargument <code class=\"docutils literal notranslate\"><span class=\"pre\">(?:...)</span></code>.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">blog_articles</span></code> view needs the outermost captured argument to be\nreversed, <code class=\"docutils literal notranslate\"><span class=\"pre\">page-2/</span></code> or no arguments in this case, while <code class=\"docutils literal notranslate\"><span class=\"pre\">comments</span></code> can be\nreversed with either no arguments or a value for <code class=\"docutils literal notranslate\"><span class=\"pre\">page_number</span></code>.</p>\n<p>Nested captured arguments create a strong coupling between the view arguments\nand the URL as illustrated by <code class=\"docutils literal notranslate\"><span class=\"pre\">blog_articles</span></code>: the view receives part of the\nURL (<code class=\"docutils literal notranslate\"><span class=\"pre\">page-2/</span></code>) instead of only the value the view is interested in. This\ncoupling is even more pronounced when reversing, since to reverse the view we\nneed to pass the piece of URL instead of the page number.</p>\n<p>As a rule of thumb, only capture the values the view needs to work with and\nuse non-capturing arguments when the regular expression needs an argument but\nthe view ignores it.</p>\n</section>\n</section>\n<section id=\"what-the-urlconf-searches-against\">\n<h2>What the URLconf searches against<a class=\"heading-anchor\" href=\"#what-the-urlconf-searches-against\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The URLconf searches against the requested URL, as a normal Python string. This\ndoes not include GET or POST parameters, or the domain name.</p>\n<p>Sebagai contoh, dalam permintaan pada <code class=\"docutils literal notranslate\"><span class=\"pre\">https://www.example.com/myapp/</span></code>, URLconf akan mencari <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp/</span></code>.</p>\n<p>Dalam permintaan untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">https://www.example.com/myapp/?page=3</span></code>, the URLconf akan mencari <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp/</span></code>.</p>\n<p>The URLconf doesn't look at the request method. In other words, all request\nmethods -- <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code>, etc. -- will be routed to the same\nfunction for the same URL.</p>\n</section>\n<section id=\"specifying-defaults-for-view-arguments\">\n<h2>Menentukan awalan untuk menampilkan argumen<a class=\"heading-anchor\" href=\"#specifying-defaults-for-view-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A convenient trick is to specify default parameters for your views' arguments.\nHere's an example URLconf and view:</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\"># URLconf</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">page</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog/page&lt;int:num&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">page</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n\n\n<span class=\"c1\"># View (in blog/views.py)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">page</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">num</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Output the appropriate page of blog entries, according to num.</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>In the above example, both URL patterns point to the same view --\n<code class=\"docutils literal notranslate\"><span class=\"pre\">views.page</span></code> -- but the first pattern doesn't capture anything from the\nURL. If the first pattern matches, the <code class=\"docutils literal notranslate\"><span class=\"pre\">page()</span></code> function will use its\ndefault argument for <code class=\"docutils literal notranslate\"><span class=\"pre\">num</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code>. If the second pattern matches,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">page()</span></code> will use whatever <code class=\"docutils literal notranslate\"><span class=\"pre\">num</span></code> value was captured.</p>\n</section>\n<section id=\"performance\">\n<h2>Penampilan<a class=\"heading-anchor\" href=\"#performance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django processes regular expressions in the <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> list which is\ncompiled the first time it's accessed. Subsequent requests use the cached\nconfiguration via the URL resolver.</p>\n</section>\n<section id=\"syntax-of-the-urlpatterns-variable\">\n<h2>Sintaksis dari variabel <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code><a class=\"heading-anchor\" href=\"#syntax-of-the-urlpatterns-variable\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> should be a <a class=\"reference external\" href=\"https://docs.python.org/3/glossary.html#term-sequence\" title=\"(di Python v3.14)\"><span class=\"xref std std-term\">sequence</span></a> of <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a>\nand/or <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">re_path()</span></code></a> instances.</p>\n</section>\n<section id=\"error-handling\">\n<h2>Penanganan kesalahan<a class=\"heading-anchor\" href=\"#error-handling\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>When Django can't find a match for the requested URL, or when an exception is\nraised, Django invokes an error-handling view.</p>\n<p>The views to use for these cases are specified by four variables. Their\ndefault values should suffice for most projects, but further customization is\npossible by overriding their default values.</p>\n<p>Lihat dokumentasi pada <span class=\"xref std std-ref\">customizing error views 1</span> untuk rincian penuh.</p>\n<p>Nilai-nilai itu dapat disetel dalam URLconf akar anda. Pengaturan variabel-variabel ini dalam URLconf lain apapun tidak mempunyai pengaruh.</p>\n<p>Nilai-nilai harus callable, atau deretan karakter mewakili jalur impor Pythn penuh pada tampilan yang harus dipanggil untuk menangani kondisi kesalahan di tangan.</p>\n<p>Variabel nya adalah:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">handler400</span></code> -- Lihat <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.conf.urls.handler400\" title=\"django.conf.urls.handler400\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">django.conf.urls.handler400</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">handler403</span></code> -- Lihat <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.conf.urls.handler403\" title=\"django.conf.urls.handler403\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">django.conf.urls.handler403</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">handler404</span></code> -- Lihat <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.conf.urls.handler404\" title=\"django.conf.urls.handler404\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">django.conf.urls.handler404</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">handler500</span></code> -- Lihat <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.conf.urls.handler500\" title=\"django.conf.urls.handler500\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">django.conf.urls.handler500</span></code></a>.</p></li>\n</ul>\n</section>\n<section id=\"including-other-urlconfs\">\n<span id=\"id3\"></span><h2>Menyertakan URLconf lain<a class=\"heading-anchor\" href=\"#including-other-urlconfs\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>At any point, your <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> can &quot;include&quot; other URLconf modules. This\nessentially &quot;roots&quot; a set of URLs below other ones.</p>\n<p>For example, here's an excerpt of the URLconf for the <a class=\"reference external\" href=\"https://www.djangoproject.com/\">Django website</a>\nitself. It includes a number of other URLconfs:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ... snip ...</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;community/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;aggregator.urls&quot;</span><span class=\"p\">)),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;contact/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;contact.urls&quot;</span><span class=\"p\">)),</span>\n    <span class=\"c1\"># ... snip ...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Whenever Django encounters <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a>, it chops off\nwhatever part of the URL matched up to that point and sends the remaining\nstring to the included URLconf for further processing.</p>\n<p>Another possibility is to include additional URL patterns by using a list of\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a> instances. For example, consider this URLconf:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">apps.main</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span> <span class=\"k\">as</span> <span class=\"n\">main_views</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">credit</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span> <span class=\"k\">as</span> <span class=\"n\">credit_views</span>\n\n<span class=\"n\">extra_patterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;reports/&quot;</span><span class=\"p\">,</span> <span class=\"n\">credit_views</span><span class=\"o\">.</span><span class=\"n\">report</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;reports/&lt;int:id&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">credit_views</span><span class=\"o\">.</span><span class=\"n\">report</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;charge/&quot;</span><span class=\"p\">,</span> <span class=\"n\">credit_views</span><span class=\"o\">.</span><span class=\"n\">charge</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"n\">main_views</span><span class=\"o\">.</span><span class=\"n\">homepage</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;help/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;apps.help.urls&quot;</span><span class=\"p\">)),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;credit/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"n\">extra_patterns</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Dalam contoh ini, URL <code class=\"docutils literal notranslate\"><span class=\"pre\">/credit/reports/</span></code> akan ditangani oleh tampilan Django <code class=\"docutils literal notranslate\"><span class=\"pre\">credit_views.report()</span></code>.</p>\n<p>This can be used to remove redundancy from URLconfs where a single pattern\nprefix is used repeatedly. For example, consider this URLconf:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;page_slug&gt;-&lt;page_id&gt;/history/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">history</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;page_slug&gt;-&lt;page_id&gt;/edit/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">edit</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;page_slug&gt;-&lt;page_id&gt;/discuss/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">discuss</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;page_slug&gt;-&lt;page_id&gt;/permissions/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Kami dapat meningkatkan dengan menyatakan awalan jalur umum hanya sekali dan mengelompokkan akhiran yang beda:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span>\n        <span class=\"s2\">&quot;&lt;page_slug&gt;-&lt;page_id&gt;/&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">include</span><span class=\"p\">(</span>\n            <span class=\"p\">[</span>\n                <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;history/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">history</span><span class=\"p\">),</span>\n                <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;edit/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">edit</span><span class=\"p\">),</span>\n                <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;discuss/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">discuss</span><span class=\"p\">),</span>\n                <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;permissions/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"p\">),</span>\n            <span class=\"p\">]</span>\n        <span class=\"p\">),</span>\n    <span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<section id=\"captured-parameters\">\n<h3>Parameter tertangkap<a class=\"heading-anchor\" href=\"#captured-parameters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>An included URLconf receives any captured parameters from parent URLconfs, so\nthe following example is valid:</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\"># In settings/urls/main.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;username&gt;/blog/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;foo.urls.blog&quot;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n\n<span class=\"c1\"># In foo/urls/blog.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">blog</span><span class=\"o\">.</span><span class=\"n\">index</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;archive/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">blog</span><span class=\"o\">.</span><span class=\"n\">archive</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>In the above example, the captured <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;username&quot;</span></code> variable is passed to the\nincluded URLconf, as expected.</p>\n</section>\n</section>\n<section id=\"passing-extra-options-to-view-functions\">\n<span id=\"views-extra-options\"></span><h2>Melewatkan pilihan tambahan untuk melihat fungsi<a class=\"heading-anchor\" href=\"#passing-extra-options-to-view-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>URLconfs have a hook that lets you pass extra arguments to your view functions,\nas a Python dictionary.</p>\n<p>The <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a> function can take an optional third argument\nwhich should be a dictionary of extra keyword arguments to pass to the view\nfunction.</p>\n<p>Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog/&lt;int:year&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">year_archive</span><span class=\"p\">,</span> <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=\"p\">]</span>\n</code></pre></div>\n<p>Dalam contoh ini, untuk permintaan ke <code class=\"docutils literal notranslate\"><span class=\"pre\">/blog/2005/</span></code>, Django akan memanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">views.year_archive(permintaan,</span> <span class=\"pre\">year=2005,</span> <span class=\"pre\">foo='bar')</span></code>.</p>\n<p>This technique is used in the\n<a class=\"reference internal\" href=\"/id/6.1/ref/contrib/syndication/\"><span class=\"doc\">syndication framework</span></a> to pass metadata and\noptions to views.</p>\n<aside class=\"admonition-dealing-with-conflicts admonition\">\n<p class=\"admonition-title\">Berurusan dengan pertentangan</p>\n<p>It's possible to have a URL pattern which captures named keyword arguments,\nand also passes arguments with the same names in its dictionary of extra\narguments. When this happens, the arguments in the dictionary will be used\ninstead of the arguments captured in the URL.</p>\n</aside>\n<section id=\"passing-extra-options-to-include\">\n<h3>Melewatkan pilihan tambahan untuk  <code class=\"docutils literal notranslate\"><span class=\"pre\">include()</span></code><a class=\"heading-anchor\" href=\"#passing-extra-options-to-include\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Similarly, you can pass extra options to <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a> and\neach line in the included URLconf will be passed the extra options.</p>\n<p>Sebagai contoh, kumpulan URLcond dua ini adalah kegunaannya mirip:</p>\n<p>Setel satu:</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\"># main.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;inner&quot;</span><span class=\"p\">),</span> <span class=\"p\">{</span><span class=\"s2\">&quot;blog_id&quot;</span><span class=\"p\">:</span> <span class=\"mi\">3</span><span class=\"p\">}),</span>\n<span class=\"p\">]</span>\n\n<span class=\"c1\"># inner.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">mysite</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;archive/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">archive</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;about/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">about</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Setel dua:</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\"># main.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">mysite</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;blog/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;inner&quot;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n\n<span class=\"c1\"># inner.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;archive/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">archive</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;blog_id&quot;</span><span class=\"p\">:</span> <span class=\"mi\">3</span><span class=\"p\">}),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;about/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">about</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;blog_id&quot;</span><span class=\"p\">:</span> <span class=\"mi\">3</span><span class=\"p\">}),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Note that extra options will <em>always</em> be passed to <em>every</em> line in the included\nURLconf, regardless of whether the line's view actually accepts those options\nas valid. For this reason, this technique is only useful if you're certain that\nevery view in the included URLconf accepts the extra options you're passing.</p>\n</section>\n</section>\n<section id=\"reverse-resolution-of-urls\">\n<h2>Membalikkan resolusi URL<a class=\"heading-anchor\" href=\"#reverse-resolution-of-urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>A common need when working on a Django project is the possibility to obtain\nURLs in their final forms either for embedding in generated content (views and\nassets URLs, URLs shown to the user, etc.) or for handling of the navigation\nflow on the server side (redirections, etc.)</p>\n<p>It is strongly desirable to avoid hardcoding these URLs (a laborious,\nnon-scalable and error-prone strategy). Equally dangerous is devising ad-hoc\nmechanisms to generate URLs that are parallel to the design described by the\nURLconf, which can result in the production of URLs that become stale over\ntime.</p>\n<p>Dengan kata lain, apa yang dibutuhkan adalah mekanisme DRY. Diantara keuntungan lain itu akan mengizinkan evolusi dari rancangan URL tanpa harus pergi ke semua kode sumber proyek untuk mencari dan mengganti URL usang.</p>\n<p>The primary piece of information we have available to get a URL is an\nidentification (e.g. the name) of the view in charge of handling it. Other\npieces of information that necessarily must participate in the lookup of the\nright URL are the types (positional, keyword) and values of the view arguments.</p>\n<p>Django provides a solution such that the URL mapper is the only repository of\nthe URL design. You feed it with your URLconf and then it can be used in both\ndirections:</p>\n<ul class=\"simple\">\n<li><p>Starting with a URL requested by the user/browser, it calls the right Django\nview providing any arguments it might need with their values as extracted\nfrom the URL.</p></li>\n<li><p>Dimulai dengan pencirian dari tampilan Django sesuai ditambah nilai-nilai dari argumen yang akan dilewatkan ke itu, ambil URL terkait.</p></li>\n</ul>\n<p>The first one is the usage we've been discussing in the previous sections. The\nsecond one is what is known as <em>reverse resolution of URLs</em>, <em>reverse URL\nmatching</em>, <em>reverse URL lookup</em>, or simply <em>URL reversing</em>.</p>\n<p>Django provides tools for performing URL reversing that match the different\nlayers where URLs are needed:</p>\n<ul class=\"simple\">\n<li><p>Dalam cetakan: Menggunakan etiket cetakan <a class=\"reference internal\" href=\"/id/6.1/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">url</span></code></a>.</p></li>\n<li><p>Dalam kode Python: Menggunakan fungsi <a class=\"reference internal\" href=\"/id/6.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a>.</p></li>\n<li><p>In higher level code related to handling of URLs of Django model instances:\nThe <a class=\"reference internal\" href=\"/id/6.1/ref/models/instances/#django.db.models.Model.get_absolute_url\" title=\"django.db.models.Model.get_absolute_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code></a> method.</p></li>\n</ul>\n<section id=\"examples\">\n<h3>Contoh<a class=\"heading-anchor\" href=\"#examples\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Pertimbangkan kembali masukan URLconf ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;articles/&lt;int:year&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">year_archive</span><span class=\"p\">,</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;news-year-archive&quot;</span><span class=\"p\">),</span>\n    <span class=\"c1\"># ...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Menurut rancangan ini, URL untuk arsip yang sesuai pada tahun <em>nnnn</em> adalah <code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/&lt;nnnn&gt;/</span></code>.</p>\n<p>Anda dapat mendapatkan ini dalam kode cetakan dengan menggunakan:</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=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;news-year-archive&#39;</span> <span class=\"m\">2012</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>2012 Archive<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n<span class=\"c\">{# Or with the year in a template context variable: #}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">yearvar</span> <span class=\"k\">in</span> <span class=\"nv\">year_list</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;news-year-archive&#39;</span> <span class=\"nv\">yearvar</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">yearvar</span> <span class=\"cp\">}}</span> Archive<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Atau di kode Phyton</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponseRedirect</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reverse</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">redirect_to_year</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">year</span> <span class=\"o\">=</span> <span class=\"mi\">2006</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"k\">return</span> <span class=\"n\">HttpResponseRedirect</span><span class=\"p\">(</span><span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;news-year-archive&quot;</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">year</span><span class=\"p\">,)))</span>\n</code></pre></div>\n<p>If, for some reason, it was decided that the URLs where content for yearly\narticle archives are published at should be changed then you would only need to\nchange the entry in the URLconf.</p>\n<p>In some scenarios where views are of a generic nature, a many-to-one\nrelationship might exist between URLs and views. For these cases the view name\nisn't a good enough identifier for it when comes the time of reversing URLs.\nRead the next section to know about the solution Django provides for this.</p>\n</section>\n</section>\n<section id=\"naming-url-patterns\">\n<span id=\"id4\"></span><h2>Menamai pola URL<a class=\"heading-anchor\" href=\"#naming-url-patterns\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>In order to perform URL reversing, you'll need to use <strong>named URL patterns</strong>\nas done in the examples above. The string used for the URL name can contain any\ncharacters you like. You are not restricted to valid Python names.</p>\n<p>When naming URL patterns, choose names that are unlikely to clash with other\napplications' choice of names. If you call your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">comment</span></code>\nand another application does the same thing, the URL that\n<a class=\"reference internal\" href=\"/id/6.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a> finds depends on whichever pattern is last in\nyour project's <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> list.</p>\n<p>Putting a prefix on your URL names, perhaps derived from the application\nname (such as <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp-comment</span></code> instead of <code class=\"docutils literal notranslate\"><span class=\"pre\">comment</span></code>), decreases the chance\nof collision.</p>\n<p>You can deliberately choose the <em>same URL name</em> as another application if you\nwant to override a view. For example, a common use case is to override the\n<a class=\"reference internal\" href=\"/id/6.1/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LoginView</span></code></a>. Parts of Django and most\nthird-party apps assume that this view has a URL pattern with the name\n<code class=\"docutils literal notranslate\"><span class=\"pre\">login</span></code>. If you have a custom login view and give its URL the name <code class=\"docutils literal notranslate\"><span class=\"pre\">login</span></code>,\n<a class=\"reference internal\" href=\"/id/6.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a> will find your custom view as long as it's in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> after <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.urls</span></code> is included (if that's\nincluded at all).</p>\n<p>You may also use the same name for multiple URL patterns if they differ in\ntheir arguments. In addition to the URL name, <a class=\"reference internal\" href=\"/id/6.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a>\nmatches the number of arguments and the names of the keyword arguments. Path\nconverters can also raise <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></code> to indicate no match, see\n<a class=\"reference internal\" href=\"#registering-custom-path-converters\"><span class=\"std std-ref\">Registering custom path converters</span></a> for details.</p>\n</section>\n<section id=\"url-namespaces\">\n<span id=\"topics-http-defining-url-namespaces\"></span><h2>Namespace URL<a class=\"heading-anchor\" href=\"#url-namespaces\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"introduction\">\n<h3>Kata Pengantar<a class=\"heading-anchor\" href=\"#introduction\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>URL namespaces allow you to uniquely reverse <a class=\"reference internal\" href=\"#naming-url-patterns\"><span class=\"std std-ref\">named URL patterns</span></a> even if different applications use the same URL names.\nIt's a good practice for third-party apps to always use namespaced URLs (as we\ndid in the tutorial). Similarly, it also allows you to reverse URLs if multiple\ninstances of an application are deployed. In other words, since multiple\ninstances of a single application will share named URLs, namespaces provide a\nway to tell these named URLs apart.</p>\n<p>Django applications that make proper use of URL namespacing can be deployed\nmore than once for a particular site. For example <a class=\"reference internal\" href=\"/id/6.1/ref/contrib/admin/#module-django.contrib.admin\" title=\"django.contrib.admin: Django's admin site.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code></a>\nhas an <a class=\"reference internal\" href=\"/id/6.1/ref/contrib/admin/#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> class which allows you to\n<a class=\"reference internal\" href=\"/id/6.1/ref/contrib/admin/#multiple-admin-sites\"><span class=\"std std-ref\">deploy more than one instance of the admin</span></a>. In a\nlater example, we'll discuss the idea of deploying the polls application from\nthe tutorial in two different locations so we can serve the same functionality\nto two different audiences (authors and publishers).</p>\n<p>Sebuah namespace URL datang dalam dua bagian, keduanya adalah string:</p>\n<dl class=\"simple glossary\">\n<dt id=\"term-application-namespace\">namespace aplikasi<a class=\"heading-anchor\" href=\"#term-application-namespace\"><span class=\"visually-hidden\">Link to this term</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>This describes the name of the application that is being deployed. Every\ninstance of a single application will have the same application namespace.\nFor example, Django's admin application has the somewhat predictable\napplication namespace of <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code>.</p>\n</dd>\n<dt id=\"term-instance-namespace\">namespace instance<a class=\"heading-anchor\" href=\"#term-instance-namespace\"><span class=\"visually-hidden\">Link to this term</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>Ini mencirikan instance khusus dari sebuah aplikasi. Namespace-namespace instance harus unik terhadap keseluruhan proyen anda. Bagaimanapun, sebuah namespace instance dapat berupa sama seperti namespace aplikasi. Ini digunakan untuk menentukan instance awalan dari sebuah aplikasi. Sebagai contoh, instance admin Django awalan mempunyai sebuah namespace instance dari <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code>.</p>\n</dd>\n</dl>\n<p>URL namespace ditentukan menggunakan penghubung <code class=\"docutils literal notranslate\"><span class=\"pre\">':'</span></code>. Sebagai contoh, halaman indeks utama dari aplikasi admin diacukan menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin:index'</span></code>. Ini menunjukkan sebuah namespace dari <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code>, dan sebuah URL bernama dari <code class=\"docutils literal notranslate\"><span class=\"pre\">'index'</span></code>.</p>\n<p>Namespace juga dapat bersarang. URL bernama <code class=\"docutils literal notranslate\"><span class=\"pre\">'sports:polls:index'</span></code> akan terlihat untuk sebuah pola bernama <code class=\"docutils literal notranslate\"><span class=\"pre\">'index'</span></code> dalam namespace <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code> yag itu sendiri ditentukan dalam namespace tingkat-atas <code class=\"docutils literal notranslate\"><span class=\"pre\">'sports'</span></code>.</p>\n</section>\n<section id=\"reversing-namespaced-urls\">\n<span id=\"topics-http-reversing-url-namespaces\"></span><h3>Reversing namespaced URLs<a class=\"heading-anchor\" href=\"#reversing-namespaced-urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>When given a namespaced URL (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code>) to resolve, Django splits\nthe fully qualified name into parts and then tries the following lookup:</p>\n<ol class=\"arabic\">\n<li><p>Pertama, Django mencari untuk kecocokan <a class=\"reference internal\" href=\"#term-application-namespace\"><span class=\"xref std std-term\">application namespace</span></a> (dalam contoh ini, <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code>). Ini akan menghasilkan daftar dari instance dari aplikasi itu.</p></li>\n<li><p>If there is a current application defined, Django finds and returns the URL\nresolver for that instance. The current application can be specified with\nthe <code class=\"docutils literal notranslate\"><span class=\"pre\">current_app</span></code> argument to the <a class=\"reference internal\" href=\"/id/6.1/ref/urlresolvers/#django.urls.reverse\" title=\"django.urls.reverse\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">reverse()</span></code></a>\nfunction.</p>\n<p>The <a class=\"reference internal\" href=\"/id/6.1/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">url</span></code></a> template tag uses the namespace of the currently resolved\nview as the current application in a\n<a class=\"reference internal\" href=\"/id/6.1/ref/templates/api/#django.template.RequestContext\" title=\"django.template.RequestContext\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RequestContext</span></code></a>. You can override this default by\nsetting the current application on the <a class=\"reference internal\" href=\"/id/6.1/ref/request-response/#django.http.HttpRequest.current_app\" title=\"django.http.HttpRequest.current_app\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">request.current_app</span></code></a> attribute.</p>\n</li>\n<li><p>If there is no current application, Django looks for a default\napplication instance. The default application instance is the instance\nthat has an <a class=\"reference internal\" href=\"#term-instance-namespace\"><span class=\"xref std std-term\">instance namespace</span></a> matching the <a class=\"reference internal\" href=\"#term-application-namespace\"><span class=\"xref std std-term\">application\nnamespace</span></a> (in this example, an instance of <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> called <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code>).</p></li>\n<li><p>If there is no default application instance, Django will pick the last\ndeployed instance of the application, whatever its instance name may be.</p></li>\n<li><p>If the provided namespace doesn't match an <a class=\"reference internal\" href=\"#term-application-namespace\"><span class=\"xref std std-term\">application namespace</span></a> in\nstep 1, Django will attempt a direct lookup of the namespace as an\n<a class=\"reference internal\" href=\"#term-instance-namespace\"><span class=\"xref std std-term\">instance namespace</span></a>.</p></li>\n</ol>\n<p>If there are nested namespaces, these steps are repeated for each part of the\nnamespace until only the view name is unresolved. The view name will then be\nresolved into a URL in the namespace that has been found.</p>\n<section id=\"id5\">\n<h4>Contoh<a class=\"heading-anchor\" href=\"#id5\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>To show this resolution strategy in action, consider an example of two\ninstances of the <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> application from the tutorial: one called\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code> and one called <code class=\"docutils literal notranslate\"><span class=\"pre\">'publisher-polls'</span></code>. Assume we have\nenhanced that application so that it takes the instance namespace into\nconsideration when creating and displaying polls.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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 code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;author-polls/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;polls.urls&quot;</span><span class=\"p\">,</span> <span class=\"n\">namespace</span><span class=\"o\">=</span><span class=\"s2\">&quot;author-polls&quot;</span><span class=\"p\">)),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;publisher-polls/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;polls.urls&quot;</span><span class=\"p\">,</span> <span class=\"n\">namespace</span><span class=\"o\">=</span><span class=\"s2\">&quot;publisher-polls&quot;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/urls.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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 code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">app_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;polls&quot;</span>\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">IndexView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;index&quot;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;int:pk&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">DetailView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;detail&quot;</span><span class=\"p\">),</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>Menggunakan pengaturan ini, pencarian berikut adalah mungkin:</p>\n<ul>\n<li><p>If one of the instances is current - say, if we were rendering the detail\npage in the instance <code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code> - <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code> will resolve to\nthe index page of the <code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code> instance; i.e. both of the following\nwill result in <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/author-polls/&quot;</span></code>.</p>\n<p>Dalam metode dari tampilan berdasarkan-kelas:</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=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;polls:index&quot;</span><span class=\"p\">,</span> <span class=\"n\">current_app</span><span class=\"o\">=</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">resolver_match</span><span class=\"o\">.</span><span class=\"n\">namespace</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>dan di cetakan:</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=\"k\">url</span> <span class=\"s1\">&#39;polls:index&#39;</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</li>\n<li><p>If there is no current instance - say, if we were rendering a page\nsomewhere else on the site - <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code> will resolve to the last\nregistered instance of <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code>. Since there is no default instance\n(instance namespace of <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code>), the last instance of <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> that is\nregistered will be used. This would be <code class=\"docutils literal notranslate\"><span class=\"pre\">'publisher-polls'</span></code> since it's\ndeclared last in the <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls:index'</span></code> will always resolve to the index page of the\ninstance <code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code> (and likewise for <code class=\"docutils literal notranslate\"><span class=\"pre\">'publisher-polls'</span></code>).</p></li>\n</ul>\n<p>If there were also a default instance - i.e., an instance named <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code> -\nthe only change from above would be in the case where there is no current\ninstance (the second item in the list above). In this case <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code>\nwould resolve to the index page of the default instance instead of the instance\ndeclared last in <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code>.</p>\n</section>\n</section>\n<section id=\"url-namespaces-and-included-urlconfs\">\n<span id=\"namespaces-and-include\"></span><h3>Namespace URL dan URLconf disertakan<a class=\"heading-anchor\" href=\"#url-namespaces-and-included-urlconfs\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Namespace-namespace aplikasi dari URLconf disertakan dapat ditentukan dalam dua cara.</p>\n<p>Firstly, you can set an <code class=\"docutils literal notranslate\"><span class=\"pre\">app_name</span></code> attribute in the included URLconf module,\nat the same level as the <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> attribute. You have to pass the actual\nmodule, or a string reference to the module, to <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a>,\nnot the list of <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> itself.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/urls.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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 code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">app_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;polls&quot;</span>\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">IndexView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;index&quot;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;int:pk&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">DetailView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;detail&quot;</span><span class=\"p\">),</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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 code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;polls/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;polls.urls&quot;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>URL ditentukan dalam <code class=\"docutils literal notranslate\"><span class=\"pre\">polls.urls</span></code> akan memiliki sebuah namespace aplikasi <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code>.</p>\n<p>Secondly, you can include an object that contains embedded namespace data. If\nyou <code class=\"docutils literal notranslate\"><span class=\"pre\">include()</span></code> a list of <a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a> or\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">re_path()</span></code></a> instances, the URLs contained in that object\nwill be added to the global namespace. However, you can also <code class=\"docutils literal notranslate\"><span class=\"pre\">include()</span></code> a\n2-tuple containing:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</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=\"Text code\"><code>(&lt;list of path()/re_path() instances&gt;, &lt;application namespace&gt;)\n</code></pre></div>\n<p>Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">include</span><span class=\"p\">,</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span>\n\n<span class=\"n\">polls_patterns</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n    <span class=\"p\">[</span>\n        <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">IndexView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;index&quot;</span><span class=\"p\">),</span>\n        <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;int:pk&gt;/&quot;</span><span class=\"p\">,</span> <span class=\"n\">views</span><span class=\"o\">.</span><span class=\"n\">DetailView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;detail&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">],</span>\n    <span class=\"s2\">&quot;polls&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;polls/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"n\">polls_patterns</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Ini akan menyertakan pola URL ditunjuk kedalam namespace aplikasi diberikan.</p>\n<p>The instance namespace can be specified using the <code class=\"docutils literal notranslate\"><span class=\"pre\">namespace</span></code> argument to\n<a class=\"reference internal\" href=\"/id/6.1/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a>. If the instance namespace is not specified,\nit will default to the included URLconf's application namespace. This means\nit will also be the default instance for that namespace.</p>\n</section>\n</section>","rootId":"url-dispatcher","toc":[{"title":"Ikhtisar","anchor":"overview","children":[]},{"title":"Bagaimana Django mengolah permintaan","anchor":"how-django-processes-a-request","children":[]},{"title":"Contoh","anchor":"example","children":[]},{"title":"Perubah jalur","anchor":"path-converters","children":[]},{"title":"Registering custom path converters","anchor":"registering-custom-path-converters","children":[]},{"title":"Menggunakan regular expression","anchor":"using-regular-expressions","children":[{"title":"Using unnamed regular expression groups","anchor":"using-unnamed-regular-expression-groups","children":[]},{"title":"Penjelasan bersarang","anchor":"nested-arguments","children":[]}]},{"title":"What the URLconf searches against","anchor":"what-the-urlconf-searches-against","children":[]},{"title":"Menentukan awalan untuk menampilkan argumen","anchor":"specifying-defaults-for-view-arguments","children":[]},{"title":"Penampilan","anchor":"performance","children":[]},{"title":"Sintaksis dari variabel urlpatterns","anchor":"syntax-of-the-urlpatterns-variable","children":[]},{"title":"Penanganan kesalahan","anchor":"error-handling","children":[]},{"title":"Menyertakan URLconf lain","anchor":"including-other-urlconfs","children":[{"title":"Parameter tertangkap","anchor":"captured-parameters","children":[]}]},{"title":"Melewatkan pilihan tambahan untuk melihat fungsi","anchor":"passing-extra-options-to-view-functions","children":[{"title":"Melewatkan pilihan tambahan untuk  include()","anchor":"passing-extra-options-to-include","children":[]}]},{"title":"Membalikkan resolusi URL","anchor":"reverse-resolution-of-urls","children":[{"title":"Contoh","anchor":"examples","children":[]}]},{"title":"Menamai pola URL","anchor":"naming-url-patterns","children":[]},{"title":"Namespace URL","anchor":"url-namespaces","children":[{"title":"Kata Pengantar","anchor":"introduction","children":[]},{"title":"Reversing namespaced URLs","anchor":"reversing-namespaced-urls","children":[{"title":"Contoh","anchor":"id5","children":[]}]},{"title":"Namespace URL dan URLconf disertakan","anchor":"url-namespaces-and-included-urlconfs","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Menggunakan Django","url":"/id/6.1/topics/"},{"docname":"topics/http/index","title":"Penanganan permintaan HTTP","url":"/id/6.1/topics/http/"}],"prev":{"docname":"topics/http/index","title":"Penanganan permintaan HTTP","url":"/id/6.1/topics/http/"},"next":{"docname":"topics/http/views","title":"Menulis tampilan","url":"/id/6.1/topics/http/views/"},"formats":{"html":"/id/6.1/topics/http/urls/","markdown":"/id/6.1/topics/http/urls.md","json":"/id/6.1/topics/http/urls.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/topics/http/urls.txt","official":"https://docs.djangoproject.com/id/6.1/topics/http/urls/","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"]}