{"title":"Despachante de URL","version":"2.0","locale":"pt-br","docname":"topics/http/urls","url":"/pt-br/2.0/topics/http/urls/","canonical":"https://djangodocs.dev/pt-br/2.0/topics/http/urls/","summary":"Um esquema de URL elegante e limpo, é um detalhes importante em uma aplicação Web de alta quailidade, O Django deixa que você especifique URLs como queira, sem…","html":"<h1>Despachante de URL<a class=\"heading-anchor\" href=\"#url-dispatcher\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Um esquema de URL elegante e limpo, é um detalhes importante em uma aplicação Web de alta quailidade, O Django deixa que você especifique URLs como queira, sem limitações do “framework”.</p>\n<p>Não requer <code class=\"docutils literal notranslate\"><span class=\"pre\">.php</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">.cgi</span></code>, e certamente nada de nonsense <code class=\"docutils literal notranslate\"><span class=\"pre\">0,2097,1-1-1928,00</span></code>.</p>\n<p>Veja o <a class=\"reference external\" href=\"https://www.w3.org/Provider/Style/URI\">Cool URIs don’t change</a>, por Tim Berners-Lee criador da World Wide Web, para argumentos excelentes sobre porque URLs devem ser limpas e usáveis.</p>\n<section id=\"overview\">\n<h2>Visão Geral<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link para este cabeçalho</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>Este mapemaneto pode ser tão curto ou tão longo quanto necessário. Pode referenciar outros mapeamentos. E, porque é código Python puro, pode ser construído dinamicamente.</p>\n<p>O Django também fornece uma maneira de traduzir URLs de acordo com a língua ativa. Veja o <a class=\"reference internal\" href=\"/pt-br/2.0/topics/i18n/translation/#url-internationalization\"><span class=\"std std-ref\">documentação de internacionaliação</span></a> para mais finromação.</p>\n</section>\n<section id=\"how-django-processes-a-request\">\n<span id=\"id1\"></span><h2>Como o Django processa uma requisição<a class=\"heading-anchor\" href=\"#how-django-processes-a-request\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Quando um usuário requisita uma página do seu site feito em Django, este é o algoritmo que o sistema segue para determinar qual código Python executar:</p>\n<ol class=\"arabic simple\">\n<li><p>O Django determina o módulo URLConf raiz a ser usado. Ordinariamente, este é o valor da definição do <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a>, mas se o objeto <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> que está chegando tem um atributo <a class=\"reference internal\" href=\"/pt-br/2.0/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> (definido pelo “middleware”), o valor definido por ele será usado no lugar da definição do <a class=\"reference internal\" href=\"/pt-br/2.0/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a>.</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 Python list of <a class=\"reference internal\" href=\"/pt-br/2.0/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>\nand/or <a class=\"reference internal\" href=\"/pt-br/2.0/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>O Django passa por cada padrão de URL definido, na ordem, e para na primieira que combina com a URL requisitada.</p></li>\n<li><p>Once one of the URL patterns matches, Django imports and calls the given\nview, which is a simple Python function (or a <a class=\"reference internal\" href=\"/pt-br/2.0/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>Uma instância do <a class=\"reference internal\" href=\"/pt-br/2.0/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 returned 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, overridden by any arguments specified in the optional\n<code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> argument to <a class=\"reference internal\" href=\"/pt-br/2.0/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=\"/pt-br/2.0/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>Exemplo<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Aqui um exemplo de 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=\"s1\">&#39;articles/2003/&#39;</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=\"s1\">&#39;articles/&lt;int:year&gt;/&#39;</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=\"s1\">&#39;articles/&lt;int:year&gt;/&lt;int:month&gt;/&#39;</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=\"s1\">&#39;articles/&lt;int:year&gt;/&lt;int:month&gt;/&lt;slug:slug&gt;/&#39;</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>Notas:</p>\n<ul class=\"simple\">\n<li><p>To capture a value from the URL, use angle brackets.</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 included,\nany string, excluding a <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code> character, is matched.</p></li>\n<li><p>There’s no need to add a leading slash, because every URL has that. For\nexample, it’s <code class=\"docutils literal notranslate\"><span class=\"pre\">articles</span></code>, not <code class=\"docutils literal notranslate\"><span class=\"pre\">/articles</span></code>.</p></li>\n</ul>\n<p>Requisições de exemplo:</p>\n<ul class=\"simple\">\n<li><p>A request to <code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/2005/03/</span></code> would match the third entry in the\nlist. Django would call the function\n<code class=\"docutils literal notranslate\"><span class=\"pre\">views.month_archive(request,</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> deve combinar com o primeiro padrão de formatp na lista, não o segundo, porque os padrões são testado em ordem, e o primeiro é o que primeiro atende ao padrão. Sinta-se livre para explorar a ordem e inserir casos especiais como este. Aqui, o Django deve chamar a função <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> não deve combinar com nenhum destes padrões, porque cada padrão de formato requer que a URL termine com uma barra.</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\npattern. Django 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>Path converters<a class=\"heading-anchor\" href=\"#path-converters\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The following path converters are available by default:</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, <code class=\"docutils literal notranslate\"><span class=\"pre\">'/'</span></code>.\nThis 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> - Matches zero or any positive integer. Returns an int.</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=\"(em 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\njust a 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 para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>For more complex matching requirements, you can define your own path converters.</p>\n<p>A converter is a class that includes the following:</p>\n<ul class=\"simple\">\n<li><p>A <code class=\"docutils literal notranslate\"><span class=\"pre\">regex</span></code> class attribute, as a 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.</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.</p></li>\n</ul>\n<p>Por exemplo:</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=\"s1\">&#39;[0-9]</span><span class=\"si\">{4}</span><span class=\"s1\">&#39;</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=\"s1\">&#39;</span><span class=\"si\">%04d</span><span class=\"s1\">&#39;</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=\"/pt-br/2.0/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=\"s1\">&#39;yyyy&#39;</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=\"s1\">&#39;articles/2003/&#39;</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=\"s1\">&#39;articles/&lt;yyyy:year&gt;/&#39;</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>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n<section id=\"using-regular-expressions\">\n<h2>Using regular expressions<a class=\"heading-anchor\" href=\"#using-regular-expressions\"><span class=\"visually-hidden\">Link para este cabeçalho</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=\"/pt-br/2.0/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=\"/pt-br/2.0/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=\"s1\">&#39;articles/2003/&#39;</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=\"s1\">&#39;^articles/(?P&lt;year&gt;[0-9]</span><span class=\"si\">{4}</span><span class=\"s1\">)/$&#39;</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=\"s1\">&#39;^articles/(?P&lt;year&gt;[0-9]</span><span class=\"si\">{4}</span><span class=\"s1\">)/(?P&lt;month&gt;[0-9]</span><span class=\"si\">{2}</span><span class=\"s1\">)/$&#39;</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><span class=\"sa\">r</span><span class=\"s1\">&#39;^articles/(?P&lt;year&gt;[0-9]</span><span class=\"si\">{4}</span><span class=\"s1\">)/(?P&lt;month&gt;[0-9]</span><span class=\"si\">{2}</span><span class=\"s1\">)/(?P&lt;slug&gt;[\\w-]+)/$&#39;</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>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=\"/pt-br/2.0/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=\"/pt-br/2.0/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 para este cabeçalho</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>Argumentos aninhados<a class=\"heading-anchor\" href=\"#nested-arguments\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Expressões regulares permitem argumentos aninhados, e o Django irá resolvê-los e passá-los para a “view”. Quando usar o “reverse”, o Django tentará preencher todos os argumentos capturados fora, ignorando qualquer argumento aninhado capturado. Considere o seguinte padrão de URL o qual opcionalmente pega um arumento “page”:</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=\"s1\">&#39;^blog/(page-(\\d+)/)?$&#39;</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=\"s1\">&#39;^comments/(?:page-(?P&lt;page_number&gt;\\d+)/)?$&#39;</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>Ambos os padrões usam argumento aninhados e irão resolver: por exemplo, <code class=\"docutils literal notranslate\"><span class=\"pre\">blog/page-2/</span></code> irá resultar em na combinação com <code class=\"docutils literal notranslate\"><span class=\"pre\">blog_articles</span></code> com dois argumentos posicionais: <code class=\"docutils literal notranslate\"><span class=\"pre\">page-2/</span></code> e <code class=\"docutils literal notranslate\"><span class=\"pre\">2</span></code>. O segundo padrão para <code class=\"docutils literal notranslate\"><span class=\"pre\">comments</span></code> irá encontrar <code class=\"docutils literal notranslate\"><span class=\"pre\">comments/page-2/</span></code> com argumento nomeado <code class=\"docutils literal notranslate\"><span class=\"pre\">page_number</span></code> definido como 2. O argumento mais externo neste caso é um argumento não capturado <code class=\"docutils literal notranslate\"><span class=\"pre\">(?:...)</span></code>.</p>\n<p>A “view” <code class=\"docutils literal notranslate\"><span class=\"pre\">blog_articles</span></code> precisa do argumento mais externo para que seja possível acessá-la de maneira reversa, neste caso <code class=\"docutils literal notranslate\"><span class=\"pre\">page-2/</span></code> ou nenhum argumento , enquanto ue <code class=\"docutils literal notranslate\"><span class=\"pre\">comments</span></code> pode ser acessado reversamente com argumento nenhum ou com um valor para <code class=\"docutils literal notranslate\"><span class=\"pre\">page_number</span></code>.</p>\n<p>Argumentos aninhados criam um acomplamento forte entre os argumentos da “view” e sua URL como ilustrado pelo <code class=\"docutils literal notranslate\"><span class=\"pre\">blog_articles</span></code>: a “view” recebe parte da URL (<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>page-2/”) ao invés de somente o valor que a “view” está interessada. Este acoplamento é ainda mais evidente quando acessando reversamente, já que para acessá-la reversamente precisa passar uma parte da URL ao invés de somente o número da página.</p>\n<p>Como regra geral, apenas capturar os valores que a “view” precisa para funcionar e usar argumentos não capturáveis quando a expressão regurlar precisar de um argumento mas que a “view” o ignora.</p>\n</section>\n</section>\n<section id=\"what-the-urlconf-searches-against\">\n<h2>Onde e o que o URLconf procura<a class=\"heading-anchor\" href=\"#what-the-urlconf-searches-against\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>O URLconf procura na URL requisitada, como uma string Python normal. Isso não inclui parâmetros GET ou POST, ou o nome do domínio.</p>\n<p>Por exemplo em uma requisição para <code class=\"docutils literal notranslate\"><span class=\"pre\">https://www.example.com/myapp/</span></code>, o URLconf irá olhar para <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp/</span></code>.</p>\n<p>Em uma requisição para <code class=\"docutils literal notranslate\"><span class=\"pre\">https://www.example.com/myapp/?page=3</span></code>, o URLconf irá olhar para <code class=\"docutils literal notranslate\"><span class=\"pre\">myapp/</span></code>.</p>\n<p>O URLconf nÃo olha para o método da requisição. Em outras palavras, todas os métodos de requisições – <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. – serão roteados para a mesma função para a mesma URL.</p>\n</section>\n<section id=\"specifying-defaults-for-view-arguments\">\n<h2>Especificando agumentos padrão para “view”<a class=\"heading-anchor\" href=\"#specifying-defaults-for-view-arguments\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uma truque conveniente  é especificar parâmetros padrão para seus argumentos de “views”. Aqui um exemplo de URLconf e “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=\"s1\">&#39;blog/&#39;</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=\"s1\">&#39;blog/page&lt;int:num&gt;/&#39;</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<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>Performance<a class=\"heading-anchor\" href=\"#performance\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Cada empressão regular dentro do <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> é compilada na primeira vez que é acessad. Isso torna o sistema tremendamente rápido.</p>\n</section>\n<section id=\"syntax-of-the-urlpatterns-variable\">\n<h2>Sintaxe da variável <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 para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> should be a Python list of <a class=\"reference internal\" href=\"/pt-br/2.0/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> and/or\n<a class=\"reference internal\" href=\"/pt-br/2.0/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>Manipulação de erros<a class=\"heading-anchor\" href=\"#error-handling\"><span class=\"visually-hidden\">Link para este cabeçalho</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>As “views” para usar nestes casos são especificadas por quatro variáveis. O valor padrão destas variáveis deve bastar para a maioria dos projetos, mas uma maior persoanlização é possível sobrescrevendo seus valores padrão.</p>\n<p>Veja a documentação em <a class=\"reference internal\" href=\"/pt-br/2.0/topics/http/views/#customizing-error-views\"><span class=\"std std-ref\">Personalizando “views” de erros</span></a> para detalhes completos.</p>\n<p>Tais valores podem ser definidos dentro do sey URLconf raiz. Definir estes valores em qualquer outro URLconf não irá ter nenhum efeito.</p>\n<p>Os valores devm ser “executáveis”, ou strings que representam o caminho Python completo para a “view” que deve ser chamada para lidar com o condição de erro.</p>\n<p>As variáveis são:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">handler400</span></code> – Veja <a class=\"reference internal\" href=\"/pt-br/2.0/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> – Veja <a class=\"reference internal\" href=\"/pt-br/2.0/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> – Veja <a class=\"reference internal\" href=\"/pt-br/2.0/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> – Veja <a class=\"reference internal\" href=\"/pt-br/2.0/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>Incluindo outros URLconfs<a class=\"heading-anchor\" href=\"#including-other-urlconfs\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Em qualquer ponto, seus <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>urlpatterns``podem “inluir” outros módulos URLconf. Isso essencialmente enraiza um conjunto de URLs embaixo de outros.</p>\n<p>Por exemplo, aqui um enxerto de URLconf para o próprio <a class=\"reference external\" href=\"https://www.djangoproject.com/\">Django website</a>. Isso inclui várias outras 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=\"s1\">&#39;community/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;aggregator.urls&#39;</span><span class=\"p\">)),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;contact/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;contact.urls&#39;</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=\"/pt-br/2.0/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=\"/pt-br/2.0/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=\"s1\">&#39;reports/&#39;</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=\"s1\">&#39;reports/&lt;int:id&gt;/&#39;</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=\"s1\">&#39;charge/&#39;</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=\"s1\">&#39;&#39;</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=\"s1\">&#39;help/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;apps.help.urls&#39;</span><span class=\"p\">)),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;credit/&#39;</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>Neste exemplo, a URL  <code class=\"docutils literal notranslate\"><span class=\"pre\">/credit/reports/</span></code> será manipulada pela view Django <code class=\"docutils literal notranslate\"><span class=\"pre\">credit_views.report()</span></code>.</p>\n<p>Isso pode ser usado para remover redundâncias de URLconf onde um único prefixo de padrão é usado repetidamente. Por exemplo, considere o 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=\"s1\">&#39;&lt;page_slug&gt;-&lt;page_id&gt;/history/&#39;</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=\"s1\">&#39;&lt;page_slug&gt;-&lt;page_id&gt;/edit/&#39;</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=\"s1\">&#39;&lt;page_slug&gt;-&lt;page_id&gt;/discuss/&#39;</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=\"s1\">&#39;&lt;page_slug&gt;-&lt;page_id&gt;/permissions/&#39;</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>Podemos melhorar isso começando o caminho comum com um prefixo e agrupando os sufixos que diferem:</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><span class=\"s1\">&#39;&lt;page_slug&gt;-&lt;page_id&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">([</span>\n        <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;history/&#39;</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=\"s1\">&#39;edit/&#39;</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=\"s1\">&#39;discuss/&#39;</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=\"s1\">&#39;permissions/&#39;</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</code></pre></div>\n<section id=\"captured-parameters\">\n<h3>Parâmetros capturados<a class=\"heading-anchor\" href=\"#captured-parameters\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Um URLconf que foi inluído recebe qualquer parâmetro capturado vindos dos URLconfs pais, logo o seguinte exemplo é válido:</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=\"s1\">&#39;&lt;username&gt;/blog/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;foo.urls.blog&#39;</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=\"s1\">&#39;&#39;</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=\"s1\">&#39;archive/&#39;</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>No exemplo acima, a variável  <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;username&quot;</span></code> é capturada e passada para o URLconf incluído, como esperado.</p>\n</section>\n</section>\n<section id=\"passing-extra-options-to-view-functions\">\n<span id=\"views-extra-options\"></span><h2>Passando opções extras para função “view”<a class=\"heading-anchor\" href=\"#passing-extra-options-to-view-functions\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>URLconfs tem um gancho que deixa você passar argumentos extra par suas funções “view”, como um dicionário Python.</p>\n<p>The <a class=\"reference internal\" href=\"/pt-br/2.0/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>Por exemplo:</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=\"s1\">&#39;blog/&lt;int:year&gt;/&#39;</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=\"s1\">&#39;foo&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;bar&#39;</span><span class=\"p\">}),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>In this example, for a request to <code class=\"docutils literal notranslate\"><span class=\"pre\">/blog/2005/</span></code>, Django will call\n<code class=\"docutils literal notranslate\"><span class=\"pre\">views.year_archive(request,</span> <span class=\"pre\">year=2005,</span> <span class=\"pre\">foo='bar')</span></code>.</p>\n<p>Esta técnica é usada no <a class=\"reference internal\" href=\"/pt-br/2.0/ref/contrib/syndication/\"><span class=\"doc\">syndication framework</span></a> para passar metadados e opções para as “views”.</p>\n<aside class=\"admonition-dealing-with-conflicts admonition\">\n<p class=\"admonition-title\">Lidando com conflitos</p>\n<p>É possível ter um  padrão de formato de URL o qual captura argumentos nominados, e também passa argumentos com os mesmos nomes neste dicionário de argumentos extras. Quando isso acontece, o argumento no dicionário serão usados no lugar dos argumentos capturados na URL.</p>\n</aside>\n<section id=\"passing-extra-options-to-include\">\n<h3>Passando opções extra para o <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 para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Similarly, you can pass extra options to <a class=\"reference internal\" href=\"/pt-br/2.0/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>Por exemplo, estas duas definições de URLconf são funcionamente idênticas:</p>\n<p>Definição um:</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=\"s1\">&#39;blog/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;inner&#39;</span><span class=\"p\">),</span> <span class=\"p\">{</span><span class=\"s1\">&#39;blog_id&#39;</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=\"s1\">&#39;archive/&#39;</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=\"s1\">&#39;about/&#39;</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>Definição dois:</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=\"s1\">&#39;blog/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;inner&#39;</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=\"s1\">&#39;archive/&#39;</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=\"s1\">&#39;blog_id&#39;</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=\"s1\">&#39;about/&#39;</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=\"s1\">&#39;blog_id&#39;</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 que as opções extra serão <em>sempre</em> passadas para <em>cada</em> linha do URLconf incluído, independente se a “view” aceita estas opções como válidas. Por esta razão, essa técnica é somente útil se você estiver certo que cada “view” no URLconf incluído aceita as opções extras que estão sendo passadas.</p>\n</section>\n</section>\n<section id=\"reverse-resolution-of-urls\">\n<h2>A resolução reversa de URLs<a class=\"heading-anchor\" href=\"#reverse-resolution-of-urls\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uma necessidade comum quando trabalhando com um projeto Django é a possibilidade de obter URLs na sua forma final, seja para adicioná-lo em um conteúdo gerado (“views” e ativos de URLs, URLs a serem mostradas para o usuário, etc.) ou para lidar com o fluxo de navegação no lado do servidor (redirecionamentos, etc).</p>\n<p>É altamente desejável evitar escrever URLs diretamente no código (uma estratégia trabalhosa, não-escalável e propensa a erros). Igualmente perigoso é conceber mecânismos pontuais para gerar URLs que sejam paralelos as especificações descritas no URLconf, o que pode resultar na produção de URLs que se tornem desatualizadas ao passar do tempo.</p>\n<p>Em outras palavras, o que é preciso é um mecênismo enxuto (“DRY”). Entre outras vantagens isso permitiria a evolução da definição de URL sem ter que passar por todo o código do projeto para procurar e substituir URLs desatualizadas.</p>\n<p>O primeiro pedaço de infomação que temos disponível para chegar a uma URL é uma identificação (ex.: o nome) da “view” responsável por lidar com ela. Outras partes de informação que necessariamente deve participar da busca pela URL correta são os tipos (posicional, nomeado) e valores dos argumentos da “view”.</p>\n<p>O Django fornece uma solução tal que o mapeador de URL é o único reposritório de definição de URL. Você o alimenta com seu URLconf e então este pode ser usado em ambas as direções:</p>\n<ul class=\"simple\">\n<li><p>Começando com uma URL requisitada pelo usuário/navegador Web, ele chama a “view” Django correta fornecendo quaisquer argumentos que esta necessite e com os valores extraídos da URL.</p></li>\n<li><p>Começando com a identificação da “view” Django correspondente mais os valores dos argumentos que poderiam ser passados a ela, obten-se a URL associada.</p></li>\n</ul>\n<p>O primeiro caso é o uso que estivemos discutindo na seção anterior. O segundo é o que é conhecido como resolução <em>reversa</em> de URLs, <em>combinação reversa de URL</em>, <em>filtro reverso de URL</em>, ou simplesmente <em>URL reversa</em>.</p>\n<p>O Django fornece ferramentas para realizar a reversão de URL que vá de encontro com as diferentes camadas onde URLs são necessárias:</p>\n<ul class=\"simple\">\n<li><p>Em “templates”: usando a tag de template <a class=\"reference internal\" href=\"/pt-br/2.0/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>In Python code: Using the <a class=\"reference internal\" href=\"/pt-br/2.0/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> function.</p></li>\n<li><p>EM código de nível mais alto relacionado à manipulação de URLs de instâncias de modelos Django: o método <a class=\"reference internal\" href=\"/pt-br/2.0/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>.</p></li>\n</ul>\n<section id=\"examples\">\n<h3>Exemplos<a class=\"heading-anchor\" href=\"#examples\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Considere novamente essa entrada do 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=\"c1\">#...</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;articles/&lt;int:year&gt;/&#39;</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=\"s1\">&#39;news-year-archive&#39;</span><span class=\"p\">),</span>\n    <span class=\"c1\">#...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>According to this design, the URL for the archive corresponding to year <em>nnnn</em>\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">/articles/&lt;nnnn&gt;/</span></code>.</p>\n<p>Você pode obtê-la no código de template usando:</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>Ou em código Python:</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<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=\"s1\">&#39;news-year-archive&#39;</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>Se, por algum motivo, foi decidido que a URL onde conteúdo de arquivos de artigos anuais são publicados deve ser alterados, então é deve-se alterar somente a entrada no URLconf.</p>\n<p>Em alguns cenários onde “views” são de natureza genérica, talvez exista um relacionamento muitos-para-um entre URLs e “views”. Para estes casos  o nome da “view” não é um identificador bom o suficiente para identificá-los quando chega a hora de usar a URL reversa. Leia a próxima seção para conhecer a solução que o Django fornece pra isso.</p>\n</section>\n</section>\n<section id=\"naming-url-patterns\">\n<span id=\"id4\"></span><h2>Nomeando padrões de formato de URL<a class=\"heading-anchor\" href=\"#naming-url-patterns\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>De modo a realizar uma URL reversa, é necessário usar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>padrões de URL nominadas* como feito no exemplo acima. A string usada para o nome da URL pode conter qualquer caracter que queira. Você não está restrito a nomes válidos em Python.</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=\"/pt-br/2.0/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=\"/pt-br/2.0/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=\"/pt-br/2.0/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=\"/pt-br/2.0/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.</p>\n</section>\n<section id=\"url-namespaces\">\n<span id=\"topics-http-defining-url-namespaces\"></span><h2>Domínio de nomes de URL<a class=\"heading-anchor\" href=\"#url-namespaces\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"introduction\">\n<h3>Introdução<a class=\"heading-anchor\" href=\"#introduction\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Nomes de domínios de URL possibilitam a você exclusividade ao reverter os <a class=\"reference internal\" href=\"#naming-url-patterns\"><span class=\"std std-ref\">padrões de formato de URL nominados</span></a>, mesmo que uma aplicação diferente use os mesmos nomes para URL. É uma boa prática para aplicações de terceiros sempre usar URLs dentro de um nome de domínio (como fizemos no tutorial). De mpodo similar, isso também permite a você usar o mode reverso de URLs se múltiplas intâncias de uma aplicação for implantada. Em outras palavras, se múltiplas instâncias de uma única aplicação irá compartilhar URLs nominada, os nomes de domínios fornecem uma maneira de manter essas URLs nominadas separadas.</p>\n<p>As aplicações Django que fazem uso correto do “namespacing” da URL podem ser instaladas em produção mais de uma vez para um mesmo site. Por exemplo  <a class=\"reference internal\" href=\"/pt-br/2.0/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> tem uma classe <a class=\"reference internal\" href=\"/pt-br/2.0/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> a qual permite facilmente <a class=\"reference internal\" href=\"/pt-br/2.0/ref/contrib/admin/#multiple-admin-sites\"><span class=\"std std-ref\">instalar mais de uma instância do admin</span></a>. Em um exemplo a seguir, iremos discutir a idéia de instalar a aplicação “polls” do tutorial em dois locais diferentes de modo que podemos servir as mesmas funcionalidades para dois públicos diferentes (autores e editores).</p>\n<p>Um nome de domínio de URL é formado por duas partes, sendo ambas do tipo strings:</p>\n<dl class=\"simple glossary\">\n<dt id=\"term-application-namespace\">Nome de domínio da aplicação<a class=\"heading-anchor\" href=\"#term-application-namespace\"><span class=\"visually-hidden\">Link para este termo</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>Este descreve o nome da aplicação que está sendo implantada. Cada instância de uma única aplicação terá o mesmo nome de domínio de apliacação. Por exemlo, a aplicação de administração do Django tem previsivelmente seu nome de domínio de aplicação como sendo <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code>.</p>\n</dd>\n<dt id=\"term-instance-namespace\">Nome de domínio de instância<a class=\"heading-anchor\" href=\"#term-instance-namespace\"><span class=\"visually-hidden\">Link para este termo</span><span aria-hidden=\"true\">#</span></a></dt><dd><p>Isso identifica uma instância específica de uma aplicação. Nomes de domínio de instância devem ser únicos dentro de todo o seu projeto. Contudo, um nome de domínio de uma intância pode ser o mesmo que o nome de domínio da sua aplicação. Isso é usado para especificar uma instância padrão da aplicação. Por exemplo, a instância padrão do administrador do Django tem <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code> como seu nome de domínio de instância.</p>\n</dd>\n</dl>\n<p>Nome de domínios de URLs são especificados usando o operador <code class=\"docutils literal notranslate\"><span class=\"pre\">':'</span></code>. Por exemplo, a página principal da aplicação “admin” é referenciada usando <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin:index'</span></code>. Isso indica um nome de domínio do <code class=\"docutils literal notranslate\"><span class=\"pre\">'admin'</span></code>, e uma URL moninada de <code class=\"docutils literal notranslate\"><span class=\"pre\">'índice'</span></code>.</p>\n<p>Nomes de domínio podem ser aninhados. A URL nominada <code class=\"docutils literal notranslate\"><span class=\"pre\">'sports:polls:index'</span></code> poderia procurar por um padrão de formato chamado <code class=\"docutils literal notranslate\"><span class=\"pre\">'index'</span></code> no nome de domínio <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code> que é ele próprio definido dentro do nome de domínio de nível superior <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>Revertendo URLs com nomes de domínios<a class=\"heading-anchor\" href=\"#reversing-namespaced-urls\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Quando dada uma URL com nome de domínio (ex.: <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code>) para resolver, o Django divide em partes o nome totalmente qualificado e então trás o seguinte filtro:</p>\n<ol class=\"arabic\">\n<li><p>Primeiro, o Django procura por uma <a class=\"reference internal\" href=\"#term-application-namespace\"><span class=\"xref std std-term\">application namespace</span></a> que combine (neste exemplo, <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code>). Isso irá produzir uma lista de instâncias daquela aplicação.</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=\"/pt-br/2.0/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>A tag de template <a class=\"reference internal\" href=\"/pt-br/2.0/ref/templates/builtins/#std-templatetag-url\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">url</span></code></a> usa o nome de domínio da view corrente resolvida como a aplicação corrente em uma <a class=\"reference internal\" href=\"/pt-br/2.0/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>. Você pode sobrescrever seu padrão definindo a aplicação corrente no atributo <a class=\"reference internal\" href=\"/pt-br/2.0/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>.</p>\n</li>\n<li><p>Se não há aplicação corrente, o Django procura por um instância de aplicação padrão. A instância da aplicação padrão é a instância que tem um <a class=\"reference internal\" href=\"#term-instance-namespace\"><span class=\"xref std std-term\">instance namespace</span></a> que combine com o <a class=\"reference internal\" href=\"#term-application-namespace\"><span class=\"xref std std-term\">application namespace</span></a>  (neste exemplo, uma instância de <code class=\"docutils literal notranslate\"><span class=\"pre\">polls``chamada</span> <span class=\"pre\">``'polls'</span></code>).</p></li>\n<li><p>Se não uma instância padrão de aplicação, o Django irá usar a última instância instalada da aplicação, não importando qual seja o nome desta instância.</p></li>\n<li><p>Se o nome de domínio não combina com  <a class=\"reference internal\" href=\"#term-application-namespace\"><span class=\"xref std std-term\">application namespace</span></a> no passo 1, o Django irá tentar um filtro direto do nome de domínio como um <a class=\"reference internal\" href=\"#term-instance-namespace\"><span class=\"xref std std-term\">instance namespace</span></a>.</p></li>\n</ol>\n<p>Se há nomes de domínios aninhados, estes passos são repetidos para cada parte do nome de domínio até que somente o nome da “view” esteja não resolvido. O nome da “view” será então resolvido em uma URL dentro do nome de domínio no qual foi encontrado.</p>\n<section id=\"id5\">\n<h4>Exemplo<a class=\"heading-anchor\" href=\"#id5\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Para mostrar essa estratégia de resolução em ação, considere um exemplo de duas instâncias da aplicação <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> do tutorial: uma chamada <code class=\"docutils literal notranslate\"><span class=\"pre\">'authors-polls'</span></code> e uma chamada <code class=\"docutils literal notranslate\"><span class=\"pre\">'publisher-poll'</span></code>. Assuma que tenhamos melhorado esta aplicação de modo que ela leve em consideração o nome de domínio da instância quando criar e mostrar as enquetes (‘polls’).</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>urls.py</code></figcaption><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=\"urls.py\"><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=\"s1\">&#39;author-polls/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;polls.urls&#39;</span><span class=\"p\">,</span> <span class=\"n\">namespace</span><span class=\"o\">=</span><span class=\"s1\">&#39;author-polls&#39;</span><span class=\"p\">)),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;publisher-polls/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;polls.urls&#39;</span><span class=\"p\">,</span> <span class=\"n\">namespace</span><span class=\"o\">=</span><span class=\"s1\">&#39;publisher-polls&#39;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>polls/urls.py</code></figcaption><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=\"polls/urls.py\"><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=\"s1\">&#39;polls&#39;</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=\"s1\">&#39;&#39;</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=\"s1\">&#39;index&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;int:pk&gt;/&#39;</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=\"s1\">&#39;detail&#39;</span><span class=\"p\">),</span>\n    <span class=\"o\">...</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>Usando esta definição, os seguintes filtros são possíveis:</p>\n<ul>\n<li><p>Se uma das intâncias é a corrente - digamos, se estivermos renderizando a página de detalhes da instância <code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code> - <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code> será resolvido para a página de índice da instância <code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code>; isto é, ambos os seguintes irão resultar em <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;/author-polls/&quot;</span></code>.</p>\n<p>No método de uma “view” baseada em classe:</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=\"s1\">&#39;polls:index&#39;</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>e no “template”:</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>Se não houver uma instância corrente - digamos, se estivermos renderizando uma págna el algum outro lugar do site - <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code> será resolvido para a última instância registrada de <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code>. Desde que não haja uma instância padrão (nome de domínio de instância <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code>), a última instância de <code class=\"docutils literal notranslate\"><span class=\"pre\">polls</span></code> registrada será usada. Essa deve ser <code class=\"docutils literal notranslate\"><span class=\"pre\">'publisher-polls'</span></code> já que foi declarada  por último no <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> sempre irá resolver para a página de índice da instância <code class=\"docutils literal notranslate\"><span class=\"pre\">'author-polls'</span></code> (da mesma forma para <code class=\"docutils literal notranslate\"><span class=\"pre\">'publisher-polls'</span></code>) .</p></li>\n</ul>\n<p>Se havia também uma instância padrão - isto é, uma instância nominada <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls'</span></code> - a única mudança do exemplo acima seria no caso onde não há intância corrente (o segundo item na lista acima). Neste caso <code class=\"docutils literal notranslate\"><span class=\"pre\">'polls:index'</span></code> seria resolvido para a página de índice da intância padrão ao invés da instância declarada por último no <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>Domínios de nomes de URL e URLconfs incluídos<a class=\"heading-anchor\" href=\"#url-namespaces-and-included-urlconfs\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>o Domínio dos nomes de aplicação de URLconfs cinludídos podem ser especificados de dois modos.</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=\"/pt-br/2.0/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=\"default\"><figcaption class=\"code-block-caption\"><code>polls/urls.py</code></figcaption><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=\"polls/urls.py\"><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=\"s1\">&#39;polls&#39;</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=\"s1\">&#39;&#39;</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=\"s1\">&#39;index&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;int:pk&gt;/&#39;</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=\"s1\">&#39;detail&#39;</span><span class=\"p\">),</span>\n    <span class=\"o\">...</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"default\"><figcaption class=\"code-block-caption\"><code>urls.py</code></figcaption><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=\"urls.py\"><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=\"s1\">&#39;polls/&#39;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s1\">&#39;polls.urls&#39;</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>As URLs definidas em <code class=\"docutils literal notranslate\"><span class=\"pre\">polls.urls</span></code> terão um nome de domínio como <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=\"/pt-br/2.0/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=\"/pt-br/2.0/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=\"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=\"p\">(</span><span class=\"o\">&lt;</span><span class=\"nb\">list</span> <span class=\"n\">of</span> <span class=\"n\">path</span><span class=\"p\">()</span><span class=\"o\">/</span><span class=\"n\">re_path</span><span class=\"p\">()</span> <span class=\"n\">instances</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"o\">&lt;</span><span class=\"n\">application</span> <span class=\"n\">namespace</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Por exemplo:</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=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</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=\"s1\">&#39;index&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;int:pk&gt;/&#39;</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=\"s1\">&#39;detail&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">],</span> <span class=\"s1\">&#39;polls&#39;</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=\"s1\">&#39;polls/&#39;</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>Isso irá incluir o nome do padrão de formato de URL nomeado dentro do nome de domínio da dada aplicação.</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=\"/pt-br/2.0/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":"Visão Geral","anchor":"overview","children":[]},{"title":"Como o Django processa uma requisição","anchor":"how-django-processes-a-request","children":[]},{"title":"Exemplo","anchor":"example","children":[]},{"title":"Path converters","anchor":"path-converters","children":[]},{"title":"Registering custom path converters","anchor":"registering-custom-path-converters","children":[]},{"title":"Using regular expressions","anchor":"using-regular-expressions","children":[{"title":"Using unnamed regular expression groups","anchor":"using-unnamed-regular-expression-groups","children":[]},{"title":"Argumentos aninhados","anchor":"nested-arguments","children":[]}]},{"title":"Onde e o que o URLconf procura","anchor":"what-the-urlconf-searches-against","children":[]},{"title":"Especificando agumentos padrão para “view”","anchor":"specifying-defaults-for-view-arguments","children":[]},{"title":"Performance","anchor":"performance","children":[]},{"title":"Sintaxe da variável urlpatterns","anchor":"syntax-of-the-urlpatterns-variable","children":[]},{"title":"Manipulação de erros","anchor":"error-handling","children":[]},{"title":"Incluindo outros URLconfs","anchor":"including-other-urlconfs","children":[{"title":"Parâmetros capturados","anchor":"captured-parameters","children":[]}]},{"title":"Passando opções extras para função “view”","anchor":"passing-extra-options-to-view-functions","children":[{"title":"Passando opções extra para o include()","anchor":"passing-extra-options-to-include","children":[]}]},{"title":"A resolução reversa de URLs","anchor":"reverse-resolution-of-urls","children":[{"title":"Exemplos","anchor":"examples","children":[]}]},{"title":"Nomeando padrões de formato de URL","anchor":"naming-url-patterns","children":[]},{"title":"Domínio de nomes de URL","anchor":"url-namespaces","children":[{"title":"Introdução","anchor":"introduction","children":[]},{"title":"Revertendo URLs com nomes de domínios","anchor":"reversing-namespaced-urls","children":[{"title":"Exemplo","anchor":"id5","children":[]}]},{"title":"Domínios de nomes de URL e URLconfs incluídos","anchor":"url-namespaces-and-included-urlconfs","children":[]}]}],"breadcrumbs":[{"docname":"topics/index","title":"Usando o Django","url":"/pt-br/2.0/topics/"},{"docname":"topics/http/index","title":"Tratando requisições HTTP","url":"/pt-br/2.0/topics/http/"}],"prev":{"docname":"topics/http/index","title":"Tratando requisições HTTP","url":"/pt-br/2.0/topics/http/"},"next":{"docname":"topics/http/views","title":"Escrevendo “views”","url":"/pt-br/2.0/topics/http/views/"},"formats":{"html":"/pt-br/2.0/topics/http/urls/","markdown":"/pt-br/2.0/topics/http/urls.md","json":"/pt-br/2.0/topics/http/urls.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/topics/http/urls.txt","official":"https://docs.djangoproject.com/pt-br/2.0/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","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}