{"title":"API nativa de views baseadas em classes","version":"4.2","locale":"pt-br","docname":"ref/class-based-views/index","url":"/pt-br/4.2/ref/class-based-views/","canonical":"https://djangodocs.dev/pt-br/4.2/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/4.2/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/4.2/ref/class-based-views/base/\">“Views” de base</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/ref/class-based-views/mixins/\">Class-based views mixins</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.2/ref/class-based-views/mixins-simple/\">Simple mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.2/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/4.2/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/4.2/ref/class-based-views/mixins-single-object/\">Single object mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.2/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/4.2/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/4.2/ref/class-based-views/mixins-multiple-object/\">Multiple object mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.2/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/4.2/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/4.2/ref/class-based-views/mixins-editing/\">Editing mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.2/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/4.2/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/4.2/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/4.2/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/4.2/ref/class-based-views/mixins-date-based/\">Date-based mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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/4.2/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>Uma class-based view é implantada sob um padrão de URL usando o <a class=\"reference internal\" href=\"/pt-br/4.2/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>Argumentos passados para  <a class=\"reference internal\" href=\"/pt-br/4.2/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> serão atribuidos a instância usada no processamento da requisição. Usando o exemplo anterior, significa que toda requisição on <code class=\"docutils literal notranslate\"><span class=\"pre\">MyView</span></code> é capaz de acessar <code class=\"docutils literal notranslate\"><span class=\"pre\">self.size</span></code>. Os argumentos devem corresponder aos atributos que já existem na classe (retornar <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> na checagem do metodo <code class=\"docutils literal notranslate\"><span class=\"pre\">hasattr</span></code> )</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/4.2/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/4.2/ref/"}],"prev":{"docname":"ref/checks","title":"O framework de verificação do sistema.","url":"/pt-br/4.2/ref/checks/"},"next":{"docname":"ref/class-based-views/base","title":"“Views” de base","url":"/pt-br/4.2/ref/class-based-views/base/"},"formats":{"html":"/pt-br/4.2/ref/class-based-views/","markdown":"/pt-br/4.2/ref/class-based-views.md","json":"/pt-br/4.2/ref/class-based-views.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/ref/class-based-views/index.txt","official":"https://docs.djangoproject.com/pt-br/4.2/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","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}