{"title":"“Views” de base","version":"3.0","locale":"pt-br","docname":"ref/class-based-views/base","url":"/pt-br/3.0/ref/class-based-views/base/","canonical":"https://djangodocs.dev/pt-br/3.0/ref/class-based-views/base/","summary":"As três classes seguintes fornecem a maioria das fincionalidades necessárias para criar “views” do Django. Você pode pensar nelas como “views” mães, as quais podem…","html":"<h1>“Views” de base<a class=\"heading-anchor\" href=\"#base-views\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>As três classes seguintes fornecem a maioria das fincionalidades necessárias para criar “views” do Django. Você pode pensar nelas como “views” mães, as quais podem ser usadas elas mesmas ou serem herdadas. Elas talvez não forneçam todas as capacidades requeridas para projetos, para tais casos existem “Mixins” e “views” genéricas baseadas em classes.</p>\n<p>Muitas das “views” baseadas em classes embutidas no Django herdam de outras “views” baseadas em classes ou vários “mixins. Por causa dessa cadeia de heranças é muito importante, que a classe ascendente seja documentada sob a seção título do <strong>Ancestors (MRO)</strong>.MRO é um acronismo em inglês para Ordem de Resolução de Método.</p>\n<section id=\"view\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">View</span></code><a class=\"heading-anchor\" href=\"#view\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">View</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The master class-based base view. All other class-based views inherit from\nthis base class. It isn’t strictly a generic view and thus can also be\nimported from <code class=\"docutils literal notranslate\"><span class=\"pre\">django.views</span></code>.</p>\n<p><strong>Fluxograma de métodos</strong></p>\n<ol class=\"arabic simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.setup\" title=\"django.views.generic.base.View.setup\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">setup()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.http_method_not_allowed\" title=\"django.views.generic.base.View.http_method_not_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">http_method_not_allowed()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.options\" title=\"django.views.generic.base.View.options\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">options()</span></code></a></p></li>\n</ol>\n<p><strong>Examplo views.py</strong>:</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\">HttpResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">View</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyView</span><span class=\"p\">(</span><span class=\"n\">View</span><span class=\"p\">):</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span><span class=\"s1\">&#39;Hello, World!&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><strong>Exemplo urls.py</strong>:</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\">myapp.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">MyView</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;mine/&#39;</span><span class=\"p\">,</span> <span class=\"n\">MyView</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;my-view&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><strong>Atributos</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.http_method_names\">\n<span class=\"sig-name descname\"><span class=\"pre\">http_method_names</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.http_method_names\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A lista de nomes de métodos HTTP que esta “view” irá aceitar.</p>\n<p>Padrão:</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=\"s1\">&#39;get&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;post&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;put&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;patch&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;delete&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;head&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;options&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;trace&#39;</span><span class=\"p\">]</span>\n</code></pre></div>\n</dd></dl>\n\n<p><strong>Métodos</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.as_view\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">classmethod</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">as_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">initkwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.as_view\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Retorna uma “view” “chamável” que recebe um request e retorna uma resposta:</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\">response</span> <span class=\"o\">=</span> <span class=\"n\">MyView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">()(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>A “view” retornada tem os atributos  <code class=\"docutils literal notranslate\"><span class=\"pre\">view_class</span></code> e <code class=\"docutils literal notranslate\"><span class=\"pre\">view_initkwargs</span></code>.</p>\n<p>When the view is called during the request/response cycle, the\n<a class=\"reference internal\" href=\"#django.views.generic.base.View.setup\" title=\"django.views.generic.base.View.setup\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">setup()</span></code></a> method assigns the <a class=\"reference internal\" href=\"/pt-br/3.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> to\nthe view’s <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> attribute, and any positional and/or keyword\narguments <a class=\"reference internal\" href=\"/pt-br/3.0/topics/http/urls/#how-django-processes-a-request\"><span class=\"std std-ref\">captured from the URL pattern</span></a> to the <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code>\nattributes, respectively. Then <a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a> is called.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.setup\">\n<span class=\"sig-name descname\"><span class=\"pre\">setup</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.setup\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"2.2\">\n<p class=\"version-note-title\">New in Django 2.2</p></aside>\n<p>Initializes view instance attributes: <code class=\"docutils literal notranslate\"><span class=\"pre\">self.request</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">self.args</span></code>,\nand <code class=\"docutils literal notranslate\"><span class=\"pre\">self.kwargs</span></code> prior to <a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a>.</p>\n<p>Overriding this method allows mixins to setup instance attributes for\nreuse in child classes. When overriding this method, you must call\n<code class=\"docutils literal notranslate\"><span class=\"pre\">super()</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.dispatch\">\n<span class=\"sig-name descname\"><span class=\"pre\">dispatch</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.dispatch\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A parte <code class=\"docutils literal notranslate\"><span class=\"pre\">view</span></code> da “view”– o método que aceita um argumento <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> mais outros argumentos, e retorna uma resposta HTTP.</p>\n<p>A implementação padrão irá introspectar o método HTTP e tentar delegar para um método que combine com o método HTTP; um <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> será delegado para <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code>, um <code class=\"docutils literal notranslate\"><span class=\"pre\">POST``para</span> <span class=\"pre\">um</span> <span class=\"pre\">``post()</span></code>, e assim por diante.</p>\n<p>Por padrão, uma requisição <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code> será delegada para <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code>. Se você precisa manipular requisições <code class=\"docutils literal notranslate\"><span class=\"pre\">HEAD</span></code> de uma maneira diferente de um <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code>, você pode sobrescrever o método <code class=\"docutils literal notranslate\"><span class=\"pre\">head()</span></code>. veja <a class=\"reference internal\" href=\"/pt-br/3.0/topics/class-based-views/#supporting-other-http-methods\"><span class=\"std std-ref\">Supporting other HTTP methods</span></a> para um exemplo.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.http_method_not_allowed\">\n<span class=\"sig-name descname\"><span class=\"pre\">http_method_not_allowed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.http_method_not_allowed\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se a “view” é chamada com um método HTTP que ela não suport, então este método é chamado.</p>\n<p>A implementação padrão retorna <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponseNotAllowed</span></code> com uma lista de métodos permitidos in formato de texto simples.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.View.options\">\n<span class=\"sig-name descname\"><span class=\"pre\">options</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.View.options\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Handles responding to requests for the OPTIONS HTTP verb. Returns a\nresponse with the <code class=\"docutils literal notranslate\"><span class=\"pre\">Allow</span></code> header containing a list of the view’s\nallowed HTTP method names.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"templateview\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateView</span></code><a class=\"heading-anchor\" href=\"#templateview\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateView\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">TemplateView</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateView\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renderiza um dado template, com o contexto contendo parâmetros capturados na URL.</p>\n<p><strong>Ancestrais (MRO)</strong></p>\n<p>Essa “view” herda métodos e atributos das seguintes “views”:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/pt-br/3.0/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin\" title=\"django.views.generic.base.TemplateResponseMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.TemplateResponseMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/pt-br/3.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin\" title=\"django.views.generic.base.ContextMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.ContextMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View\" title=\"django.views.generic.base.View\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.View</span></code></a></p></li>\n</ul>\n<p><strong>Fluxograma de métodos</strong></p>\n<ol class=\"arabic simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.setup\" title=\"django.views.generic.base.View.setup\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">setup()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.http_method_not_allowed\" title=\"django.views.generic.base.View.http_method_not_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">http_method_not_allowed()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/pt-br/3.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin.get_context_data\" title=\"django.views.generic.base.ContextMixin.get_context_data\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_context_data()</span></code></a></p></li>\n</ol>\n<p><strong>Examplo views.py</strong>:</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.views.generic.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateView</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">articles.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HomePageView</span><span class=\"p\">(</span><span class=\"n\">TemplateView</span><span class=\"p\">):</span>\n\n    <span class=\"n\">template_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;home.html&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_context_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_context_data</span><span class=\"p\">(</span><span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"n\">context</span><span class=\"p\">[</span><span class=\"s1\">&#39;latest_articles&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">Article</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()[:</span><span class=\"mi\">5</span><span class=\"p\">]</span>\n        <span class=\"k\">return</span> <span class=\"n\">context</span>\n</code></pre></div>\n<p><strong>Exemplo urls.py</strong>:</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\">myapp.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HomePageView</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\">HomePageView</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;home&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><strong>Context</strong></p>\n<ul class=\"simple\">\n<li><p>Populada (através do <a class=\"reference internal\" href=\"/pt-br/3.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin\" title=\"django.views.generic.base.ContextMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ContextMixin</span></code></a>) com os argumentos nomeados capturados do padrão formatado da URL que serve a “view”.</p></li>\n<li><p>You can also add context using the\n<a class=\"reference internal\" href=\"/pt-br/3.0/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin.extra_context\" title=\"django.views.generic.base.ContextMixin.extra_context\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">extra_context</span></code></a> keyword\nargument for <a class=\"reference internal\" href=\"#django.views.generic.base.View.as_view\" title=\"django.views.generic.base.View.as_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">as_view()</span></code></a>.</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"redirectview\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">RedirectView</span></code><a class=\"heading-anchor\" href=\"#redirectview\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">RedirectView</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Redirecionamentos para uma URL específica.</p>\n<p>A URL dada deve pode conter formatação de string no estilo de dicionario, o qual será interpolado com os parâmetros capturados na UTL. Porque a interpoalação de palavras-chave <em>sempre</em> são feitas (mesmo que nenhum argumento seja passado), qualquer caracter <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;%&quot;</span></code> na URL deve ser escrita como <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;%%&quot;</span></code> então o Python irá converte-los para um único sinal de porcentagem na saída.</p>\n<p>Se a dada URL é <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, o Django irá retornar um <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpResponseGone</span></code> (410).</p>\n<p><strong>Ancestrais (MRO)</strong></p>\n<p>Essa “view” herda métodos e atributos da seguinte “view”:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View\" title=\"django.views.generic.base.View\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.View</span></code></a></p></li>\n</ul>\n<p><strong>Fluxograma de métodos</strong></p>\n<ol class=\"arabic simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.setup\" title=\"django.views.generic.base.View.setup\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">setup()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.dispatch\" title=\"django.views.generic.base.View.dispatch\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">dispatch()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.View.http_method_not_allowed\" title=\"django.views.generic.base.View.http_method_not_allowed\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">http_method_not_allowed()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.get_redirect_url\" title=\"django.views.generic.base.RedirectView.get_redirect_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_redirect_url()</span></code></a></p></li>\n</ol>\n<p><strong>Examplo views.py</strong>:</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.shortcuts</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">get_object_or_404</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RedirectView</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">articles.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Article</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleCounterRedirectView</span><span class=\"p\">(</span><span class=\"n\">RedirectView</span><span class=\"p\">):</span>\n\n    <span class=\"n\">permanent</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n    <span class=\"n\">query_string</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>\n    <span class=\"n\">pattern_name</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;article-detail&#39;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_redirect_url</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">article</span> <span class=\"o\">=</span> <span class=\"n\">get_object_or_404</span><span class=\"p\">(</span><span class=\"n\">Article</span><span class=\"p\">,</span> <span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s1\">&#39;pk&#39;</span><span class=\"p\">])</span>\n        <span class=\"n\">article</span><span class=\"o\">.</span><span class=\"n\">update_counter</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_redirect_url</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><strong>Exemplo urls.py</strong>:</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\">django.views.generic.base</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RedirectView</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">article.views</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ArticleCounterRedirectView</span><span class=\"p\">,</span> <span class=\"n\">ArticleDetail</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;counter/&lt;int:pk&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">ArticleCounterRedirectView</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;article-counter&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;details/&lt;int:pk&gt;/&#39;</span><span class=\"p\">,</span> <span class=\"n\">ArticleDetail</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;article-detail&#39;</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s1\">&#39;go-to-django/&#39;</span><span class=\"p\">,</span> <span class=\"n\">RedirectView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span><span class=\"n\">url</span><span class=\"o\">=</span><span class=\"s1\">&#39;https://djangoproject.com&#39;</span><span class=\"p\">),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;go-to-django&#39;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><strong>Atributos</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.url\">\n<span class=\"sig-name descname\"><span class=\"pre\">url</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.url\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A URL para a qual será redirecionada, como string. Ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> para levantar um erro HTTP 410 (“Gone”).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.pattern_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">pattern_name</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.pattern_name\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>O nome do padrão formatado para URL para redirecionar. O reverso será feito usando o mesmo “args” e “kwargs” como foram passados para esta “view”.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.permanent\">\n<span class=\"sig-name descname\"><span class=\"pre\">permanent</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.permanent\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se o redirecionamento deve ser permanente ou não. A única diferença aqui é o código de estatus HTTP retornado. Se <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, então o redirecionamento usará código de estatus 301. Se <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, o redirecionamento usará código de estatus 302. Por padrão, <code class=\"docutils literal notranslate\"><span class=\"pre\">permanent</span></code> é <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.query_string\">\n<span class=\"sig-name descname\"><span class=\"pre\">query_string</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.query_string\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Se passa ou não no GET a “query string” para o novo local. Se <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, então a “query string” é adicionada à URL. Se <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, entao a “query string” é descartada. Por padrão, <code class=\"docutils literal notranslate\"><span class=\"pre\">query_string</span></code> é <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<p><strong>Métodos</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.RedirectView.get_redirect_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_redirect_url</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.RedirectView.get_redirect_url\"><span class=\"visually-hidden\">Link para esta definição</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Constrói a URL alvo para redirecionamento.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">args</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> arguments are positional and/or keyword\narguments <a class=\"reference internal\" href=\"/pt-br/3.0/topics/http/urls/#how-django-processes-a-request\"><span class=\"std std-ref\">captured from the URL pattern</span></a>, respectively.</p>\n<p>A implementação padrão usa <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.url\" title=\"django.views.generic.base.RedirectView.url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">url</span></code></a> como a string inicial e realiza a expansão dos parâmetros nomeados <code class=\"docutils literal notranslate\"><span class=\"pre\">%</span></code> na string usando os grupos nomeados capturados na URL.</p>\n<p>Se <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.url\" title=\"django.views.generic.base.RedirectView.url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">url</span></code></a> não está definido, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_redirect_url()</span></code> tenta fazer o reverse de <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.pattern_name\" title=\"django.views.generic.base.RedirectView.pattern_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">pattern_name</span></code></a> usando o que foi capturado na URL (ambos os grupos, nomeados e não nomeados são usados).</p>\n<p>Se requisitado via <a class=\"reference internal\" href=\"#django.views.generic.base.RedirectView.query_string\" title=\"django.views.generic.base.RedirectView.query_string\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">query_string</span></code></a>, também será adicionado a “query string” a URL gerada. Subclasses podem implementar qualquer comportamento que quiser, contanto que o método retorne uma string URL de redirecionamento pronta.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>","rootId":"base-views","toc":[{"title":"View","anchor":"view","children":[]},{"title":"TemplateView","anchor":"templateview","children":[]},{"title":"RedirectView","anchor":"redirectview","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Referência da API","url":"/pt-br/3.0/ref/"},{"docname":"ref/class-based-views/index","title":"API nativa de views baseadas em classes","url":"/pt-br/3.0/ref/class-based-views/"}],"prev":{"docname":"ref/class-based-views/index","title":"API nativa de views baseadas em classes","url":"/pt-br/3.0/ref/class-based-views/"},"next":{"docname":"ref/class-based-views/generic-display","title":"Views de exibição genéricas","url":"/pt-br/3.0/ref/class-based-views/generic-display/"},"formats":{"html":"/pt-br/3.0/ref/class-based-views/base/","markdown":"/pt-br/3.0/ref/class-based-views/base.md","json":"/pt-br/3.0/ref/class-based-views/base.json"},"source":"https://github.com/django/django/blob/stable/3.0.x/docs/ref/class-based-views/base.txt","official":"https://docs.djangoproject.com/pt-br/3.0/ref/class-based-views/base/","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"]}