{"title":"API nativa de views baseadas em classes","version":"4.0","locale":"pt-br","docname":"ref/class-based-views/index","url":"/pt-br/4.0/ref/class-based-views/","canonical":"https://djangodocs.dev/pt-br/4.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.","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.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/4.0/ref/class-based-views/base/\">“Views” de base</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/base/#view\"><code class=\"docutils literal notranslate\">View</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/base/#templateview\"><code class=\"docutils literal notranslate\">TemplateView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/base/#redirectview\"><code class=\"docutils literal notranslate\">RedirectView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/generic-display/#detailview\"><code class=\"docutils literal notranslate\">DetailView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-display/#listview\"><code class=\"docutils literal notranslate\">ListView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/generic-editing/#formview\"><code class=\"docutils literal notranslate\">FormView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-editing/#createview\"><code class=\"docutils literal notranslate\">CreateView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-editing/#updateview\"><code class=\"docutils literal notranslate\">UpdateView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-editing/#deleteview\"><code class=\"docutils literal notranslate\">DeleteView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/generic-date-based/#archiveindexview\"><code class=\"docutils literal notranslate\">ArchiveIndexView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-date-based/#yeararchiveview\"><code class=\"docutils literal notranslate\">YearArchiveView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-date-based/#montharchiveview\"><code class=\"docutils literal notranslate\">MonthArchiveView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-date-based/#weekarchiveview\"><code class=\"docutils literal notranslate\">WeekArchiveView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-date-based/#dayarchiveview\"><code class=\"docutils literal notranslate\">DayArchiveView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-date-based/#todayarchiveview\"><code class=\"docutils literal notranslate\">TodayArchiveView</code></a></li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/generic-date-based/#datedetailview\"><code class=\"docutils literal notranslate\">DateDetailView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins/\">Class-based views mixins</a><ul>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-simple/\">Simple mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-simple/#contextmixin\"><code class=\"docutils literal notranslate\">ContextMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-simple/#templateresponsemixin\"><code class=\"docutils literal notranslate\">TemplateResponseMixin</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/mixins-single-object/#singleobjectmixin\"><code class=\"docutils literal notranslate\">SingleObjectMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-single-object/#singleobjecttemplateresponsemixin\"><code class=\"docutils literal notranslate\">SingleObjectTemplateResponseMixin</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/mixins-multiple-object/#multipleobjectmixin\"><code class=\"docutils literal notranslate\">MultipleObjectMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-multiple-object/#multipleobjecttemplateresponsemixin\"><code class=\"docutils literal notranslate\">MultipleObjectTemplateResponseMixin</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-editing/\">Editing mixins</a><ul>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-editing/#formmixin\"><code class=\"docutils literal notranslate\">FormMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-editing/#modelformmixin\"><code class=\"docutils literal notranslate\">ModelFormMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-editing/#processformview\"><code class=\"docutils literal notranslate\">ProcessFormView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-editing/#deletionmixin\"><code class=\"docutils literal notranslate\">DeletionMixin</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/mixins-date-based/#yearmixin\"><code class=\"docutils literal notranslate\">YearMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-date-based/#monthmixin\"><code class=\"docutils literal notranslate\">MonthMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-date-based/#daymixin\"><code class=\"docutils literal notranslate\">DayMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-date-based/#weekmixin\"><code class=\"docutils literal notranslate\">WeekMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-date-based/#datemixin\"><code class=\"docutils literal notranslate\">DateMixin</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/mixins-date-based/#basedatelistview\"><code class=\"docutils literal notranslate\">BaseDateListView</code></a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.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/4.0/ref/class-based-views/flattened-index/#view\"><code class=\"docutils literal notranslate\">View</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#templateview\"><code class=\"docutils literal notranslate\">TemplateView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#redirectview\"><code class=\"docutils literal notranslate\">RedirectView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/flattened-index/#detailview\"><code class=\"docutils literal notranslate\">DetailView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/flattened-index/#listview\"><code class=\"docutils literal notranslate\">ListView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/flattened-index/#formview\"><code class=\"docutils literal notranslate\">FormView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#createview\"><code class=\"docutils literal notranslate\">CreateView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#updateview\"><code class=\"docutils literal notranslate\">UpdateView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#deleteview\"><code class=\"docutils literal notranslate\">DeleteView</code></a></li>\n</ul>\n</li>\n<li class=\"toctree-l2\"><a class=\"reference internal\" href=\"/pt-br/4.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/4.0/ref/class-based-views/flattened-index/#archiveindexview\"><code class=\"docutils literal notranslate\">ArchiveIndexView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#yeararchiveview\"><code class=\"docutils literal notranslate\">YearArchiveView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#montharchiveview\"><code class=\"docutils literal notranslate\">MonthArchiveView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#weekarchiveview\"><code class=\"docutils literal notranslate\">WeekArchiveView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#dayarchiveview\"><code class=\"docutils literal notranslate\">DayArchiveView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#todayarchiveview\"><code class=\"docutils literal notranslate\">TodayArchiveView</code></a></li>\n<li class=\"toctree-l3\"><a class=\"reference internal\" href=\"/pt-br/4.0/ref/class-based-views/flattened-index/#datedetailview\"><code class=\"docutils literal notranslate\">DateDetailView</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\">self.foo = 3</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.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\">as_view()</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>urlpatterns <span class=\"o\">=</span> <span class=\"p\">[</span>\n    path<span class=\"p\">(</span><span class=\"s1\">&#39;view/&#39;</span><span class=\"p\">,</span> MyView<span class=\"o\">.</span>as_view<span class=\"p\">(</span>size<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\" role=\"note\">\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.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\">as_view()</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\">MyView</code> é capaz de acessar <code class=\"docutils literal notranslate\">self.size</code>. Os argumentos devem corresponder aos atributos que já existem na classe (retornar <code class=\"docutils literal notranslate\">True</code> na checagem do metodo <code class=\"docutils literal notranslate\">hasattr</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\">queryset</code> key, which is a <code class=\"docutils literal notranslate\">QuerySet</code>\ninstance; see <a class=\"reference internal\" href=\"/pt-br/4.0/topics/db/queries/\"><span class=\"doc\">Fazendo consultas</span></a> for more information about <code class=\"docutils literal notranslate\">QuerySet</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.0/ref/"}],"prev":{"docname":"ref/checks","title":"O framework de verificação do sistema.","url":"/pt-br/4.0/ref/checks/"},"next":{"docname":"ref/class-based-views/base","title":"“Views” de base","url":"/pt-br/4.0/ref/class-based-views/base/"},"formats":{"html":"/pt-br/4.0/ref/class-based-views/","markdown":"/pt-br/4.0/ref/class-based-views.md","json":"/pt-br/4.0/ref/class-based-views.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/ref/class-based-views/index.txt","official":"https://docs.djangoproject.com/pt-br/4.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","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}