{"title":"API nativa de views baseadas em classes","version":"6.0","locale":"pt-br","docname":"ref/class-based-views/index","url":"/pt-br/6.0/ref/class-based-views/","canonical":"https://djangodocs.dev/pt-br/6.0/ref/class-based-views/","summary":"Documentação de API de views baseada em classes. Para uma introdução, veja Class-based views topic guide. “Views” de base View TemplateView RedirectView Views de…","html":"<h1>API nativa de views baseadas em classes<a class=\"heading-anchor\" href=\"#built-in-class-based-views-api\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Documentação de API de views baseada em classes. Para uma introdução, veja <a class=\"reference internal\" href=\"/pt-br/6.0/topics/class-based-views/\"><span class=\"doc\">Class-based views</span></a> topic guide.</p>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/base/\">“Views” de base</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/base/#view\"><code class=\"docutils literal notranslate\"><span class=\"pre\">View</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/base/#templateview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/base/#redirectview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">RedirectView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-display/\">Views de exibição genéricas</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-display/#detailview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DetailView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-display/#listview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-editing/\">Views de edição genérica</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-editing/#formview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">FormView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-editing/#createview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">CreateView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-editing/#updateview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">UpdateView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-editing/#deleteview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/\">“Views” de datas genéricas</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#archiveindexview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ArchiveIndexView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#yeararchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">YearArchiveView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#montharchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">MonthArchiveView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#weekarchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">WeekArchiveView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#dayarchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DayArchiveView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#todayarchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">TodayArchiveView</span></code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/generic-date-based/#datedetailview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DateDetailView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins/\">Class-based views mixins</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-simple/\">Simple mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-simple/#contextmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ContextMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-simple/#templateresponsemixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponseMixin</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-single-object/\">Single object mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-single-object/#singleobjectmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SingleObjectMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-single-object/#singleobjecttemplateresponsemixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">SingleObjectTemplateResponseMixin</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-multiple-object/\">Multiple object mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-multiple-object/#multipleobjectmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">MultipleObjectMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-multiple-object/#multipleobjecttemplateresponsemixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">MultipleObjectTemplateResponseMixin</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-editing/\">Editing mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-editing/#formmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">FormMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-editing/#modelformmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelFormMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-editing/#processformview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ProcessFormView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-editing/#deletionmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeletionMixin</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/\">Date-based mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/#yearmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">YearMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/#monthmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">MonthMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/#daymixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DayMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/#weekmixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">WeekMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/#datemixin\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DateMixin</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/mixins-date-based/#basedatelistview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">BaseDateListView</span></code></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/\">“Views” genéricas baseadas em classes - índice linear</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#simple-generic-views\">“Views” genéricas simples.</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#view\"><code class=\"docutils literal notranslate\"><span class=\"pre\">View</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#templateview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#redirectview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">RedirectView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#detail-views\">“Views” de detalhes</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#detailview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DetailView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#list-views\">“Views” de listagem</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#listview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ListView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#editing-views\">“Views” de edição</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#formview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">FormView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#createview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">CreateView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#updateview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">UpdateView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#deleteview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DeleteView</span></code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#date-based-views\">“Views” de dados baseados em datas</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#archiveindexview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ArchiveIndexView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#yeararchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">YearArchiveView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#montharchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">MonthArchiveView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#weekarchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">WeekArchiveView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#dayarchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DayArchiveView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#todayarchiveview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">TodayArchiveView</span></code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/flattened-index/#datedetailview\"><code class=\"docutils literal notranslate\"><span class=\"pre\">DateDetailView</span></code></a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</div>\n<section id=\"specification\">\n<h2>Especificação<a class=\"heading-anchor\" href=\"#specification\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Cada requisição processada por uma class-based view possui um estado independente; por essa razão, é seguro guardar estado de variavéis na instância usada (i.e, <code class=\"docutils literal notranslate\"><span class=\"pre\">self.foo</span> <span class=\"pre\">=</span> <span class=\"pre\">3</span></code> é uma operação thread-safe )</p>\n<p>A class-based view is deployed into a URL pattern using the\n<a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/base/#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> classmethod:</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\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;view/&quot;</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\">size</span><span class=\"o\">=</span><span class=\"mi\">42</span><span class=\"p\">)),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<aside class=\"admonition-thread-safety-with-view-arguments admonition\">\n<p class=\"admonition-title\">Thread safety with view arguments</p>\n<p>Argumentos passados a uma view são compartilhados por cada instância de uma view. Isto significa que você não deve utilizar uma lista, um dicionário ou qualquer outro objeto mutável como um argumento para uma view.  Caso você o faça e o objeto compartilhado seja modificado, as ações de um usuário acessando sua view poderá ter efeito para usuários subsequentes que estejam acessando a mesma view.</p>\n</aside>\n<p>Arguments passed into <a class=\"reference internal\" href=\"/pt-br/6.0/ref/class-based-views/base/#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> will\nbe assigned onto the instance that is used to service a request. Using the\nprevious example, this means that every request on <code class=\"docutils literal notranslate\"><span class=\"pre\">MyView</span></code> is able to use\n<code class=\"docutils literal notranslate\"><span class=\"pre\">self.size</span></code>. Arguments must correspond to attributes that already exist on\nthe class (return <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> on a <code class=\"docutils literal notranslate\"><span class=\"pre\">hasattr</span></code> check).</p>\n</section>\n<section id=\"base-vs-generic-views\">\n<h2>Visualização Básica vs Genérica<a class=\"heading-anchor\" href=\"#base-vs-generic-views\"><span class=\"visually-hidden\">Link para este cabeçalho</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Base class-based views can be thought of as <em>parent</em> views, which can be\nused by themselves or inherited from. They may not provide all the\ncapabilities required for projects, in which case there are Mixins which\nextend what base views can do.</p>\n<p>Django’s generic views are built off of those base views, and were developed\nas a shortcut for common usage patterns such as displaying the details of an\nobject. They take certain common idioms and patterns found in view\ndevelopment and abstract them so that you can quickly write common views of\ndata without having to repeat yourself.</p>\n<p>Most generic views require the <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code> key, which is a <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code>\ninstance; see <a class=\"reference internal\" href=\"/pt-br/6.0/topics/db/queries/\"><span class=\"doc\">Fazendo consultas</span></a> for more information about <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code>\nobjects.</p>\n</section>","rootId":"built-in-class-based-views-api","toc":[{"title":"Especificação","anchor":"specification","children":[]},{"title":"Visualização Básica vs Genérica","anchor":"base-vs-generic-views","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Referência da API","url":"/pt-br/6.0/ref/"}],"prev":{"docname":"ref/checks","title":"O framework de verificação do sistema.","url":"/pt-br/6.0/ref/checks/"},"next":{"docname":"ref/class-based-views/base","title":"“Views” de base","url":"/pt-br/6.0/ref/class-based-views/base/"},"formats":{"html":"/pt-br/6.0/ref/class-based-views/","markdown":"/pt-br/6.0/ref/class-based-views.md","json":"/pt-br/6.0/ref/class-based-views.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/class-based-views/index.txt","official":"https://docs.djangoproject.com/pt-br/6.0/ref/class-based-views/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}