---
title: "API nativa de views baseadas em classes"
version: 4.2
locale: pt-br
source: https://docs.djangoproject.com/pt-br/4.2/ref/class-based-views/
canonical: https://djangodocs.dev/pt-br/4.2/ref/class-based-views/
---
# API nativa de views baseadas em classes

Documentação de API de views baseada em classes. Para uma introdução, veja [Class-based views](/pt-br/4.2/topics/class-based-views/) topic guide.

- [“Views” de base](/pt-br/4.2/ref/class-based-views/base/)

  - [`View`](/pt-br/4.2/ref/class-based-views/base/#view)
  - [`TemplateView`](/pt-br/4.2/ref/class-based-views/base/#templateview)
  - [`RedirectView`](/pt-br/4.2/ref/class-based-views/base/#redirectview)
- [Views de exibição genéricas](/pt-br/4.2/ref/class-based-views/generic-display/)

  - [`DetailView`](/pt-br/4.2/ref/class-based-views/generic-display/#detailview)
  - [`ListView`](/pt-br/4.2/ref/class-based-views/generic-display/#listview)
- [Views de edição genérica](/pt-br/4.2/ref/class-based-views/generic-editing/)

  - [`FormView`](/pt-br/4.2/ref/class-based-views/generic-editing/#formview)
  - [`CreateView`](/pt-br/4.2/ref/class-based-views/generic-editing/#createview)
  - [`UpdateView`](/pt-br/4.2/ref/class-based-views/generic-editing/#updateview)
  - [`DeleteView`](/pt-br/4.2/ref/class-based-views/generic-editing/#deleteview)
- [“Views” de datas genéricas](/pt-br/4.2/ref/class-based-views/generic-date-based/)

  - [`ArchiveIndexView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#archiveindexview)
  - [`YearArchiveView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#yeararchiveview)
  - [`MonthArchiveView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#montharchiveview)
  - [`WeekArchiveView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#weekarchiveview)
  - [`DayArchiveView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#dayarchiveview)
  - [`TodayArchiveView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#todayarchiveview)
  - [`DateDetailView`](/pt-br/4.2/ref/class-based-views/generic-date-based/#datedetailview)
- [Class-based views mixins](/pt-br/4.2/ref/class-based-views/mixins/)

  - [Simple mixins](/pt-br/4.2/ref/class-based-views/mixins-simple/)

    - [`ContextMixin`](/pt-br/4.2/ref/class-based-views/mixins-simple/#contextmixin)
    - [`TemplateResponseMixin`](/pt-br/4.2/ref/class-based-views/mixins-simple/#templateresponsemixin)
  - [Single object mixins](/pt-br/4.2/ref/class-based-views/mixins-single-object/)

    - [`SingleObjectMixin`](/pt-br/4.2/ref/class-based-views/mixins-single-object/#singleobjectmixin)
    - [`SingleObjectTemplateResponseMixin`](/pt-br/4.2/ref/class-based-views/mixins-single-object/#singleobjecttemplateresponsemixin)
  - [Multiple object mixins](/pt-br/4.2/ref/class-based-views/mixins-multiple-object/)

    - [`MultipleObjectMixin`](/pt-br/4.2/ref/class-based-views/mixins-multiple-object/#multipleobjectmixin)
    - [`MultipleObjectTemplateResponseMixin`](/pt-br/4.2/ref/class-based-views/mixins-multiple-object/#multipleobjecttemplateresponsemixin)
  - [Editing mixins](/pt-br/4.2/ref/class-based-views/mixins-editing/)

    - [`FormMixin`](/pt-br/4.2/ref/class-based-views/mixins-editing/#formmixin)
    - [`ModelFormMixin`](/pt-br/4.2/ref/class-based-views/mixins-editing/#modelformmixin)
    - [`ProcessFormView`](/pt-br/4.2/ref/class-based-views/mixins-editing/#processformview)
    - [`DeletionMixin`](/pt-br/4.2/ref/class-based-views/mixins-editing/#deletionmixin)
  - [Date-based mixins](/pt-br/4.2/ref/class-based-views/mixins-date-based/)

    - [`YearMixin`](/pt-br/4.2/ref/class-based-views/mixins-date-based/#yearmixin)
    - [`MonthMixin`](/pt-br/4.2/ref/class-based-views/mixins-date-based/#monthmixin)
    - [`DayMixin`](/pt-br/4.2/ref/class-based-views/mixins-date-based/#daymixin)
    - [`WeekMixin`](/pt-br/4.2/ref/class-based-views/mixins-date-based/#weekmixin)
    - [`DateMixin`](/pt-br/4.2/ref/class-based-views/mixins-date-based/#datemixin)
    - [`BaseDateListView`](/pt-br/4.2/ref/class-based-views/mixins-date-based/#basedatelistview)
- [“Views” genéricas baseadas em classes - índice linear](/pt-br/4.2/ref/class-based-views/flattened-index/)

  - [“Views” genéricas simples.](/pt-br/4.2/ref/class-based-views/flattened-index/#simple-generic-views)

    - [`View`](/pt-br/4.2/ref/class-based-views/flattened-index/#view)
    - [`TemplateView`](/pt-br/4.2/ref/class-based-views/flattened-index/#templateview)
    - [`RedirectView`](/pt-br/4.2/ref/class-based-views/flattened-index/#redirectview)
  - [“Views” de detalhes](/pt-br/4.2/ref/class-based-views/flattened-index/#detail-views)

    - [`DetailView`](/pt-br/4.2/ref/class-based-views/flattened-index/#detailview)
  - [“Views” de listagem](/pt-br/4.2/ref/class-based-views/flattened-index/#list-views)

    - [`ListView`](/pt-br/4.2/ref/class-based-views/flattened-index/#listview)
  - [“Views” de edição](/pt-br/4.2/ref/class-based-views/flattened-index/#editing-views)

    - [`FormView`](/pt-br/4.2/ref/class-based-views/flattened-index/#formview)
    - [`CreateView`](/pt-br/4.2/ref/class-based-views/flattened-index/#createview)
    - [`UpdateView`](/pt-br/4.2/ref/class-based-views/flattened-index/#updateview)
    - [`DeleteView`](/pt-br/4.2/ref/class-based-views/flattened-index/#deleteview)
  - [“Views” de dados baseados em datas](/pt-br/4.2/ref/class-based-views/flattened-index/#date-based-views)

    - [`ArchiveIndexView`](/pt-br/4.2/ref/class-based-views/flattened-index/#archiveindexview)
    - [`YearArchiveView`](/pt-br/4.2/ref/class-based-views/flattened-index/#yeararchiveview)
    - [`MonthArchiveView`](/pt-br/4.2/ref/class-based-views/flattened-index/#montharchiveview)
    - [`WeekArchiveView`](/pt-br/4.2/ref/class-based-views/flattened-index/#weekarchiveview)
    - [`DayArchiveView`](/pt-br/4.2/ref/class-based-views/flattened-index/#dayarchiveview)
    - [`TodayArchiveView`](/pt-br/4.2/ref/class-based-views/flattened-index/#todayarchiveview)
    - [`DateDetailView`](/pt-br/4.2/ref/class-based-views/flattened-index/#datedetailview)

## Especificação

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, `self.foo = 3` é uma operação thread-safe )

Uma class-based view é implantada sob um padrão de URL usando o [`as_view()`](/pt-br/4.2/ref/class-based-views/base/#django.views.generic.base.View.as_view) classmethod:

```
urlpatterns = [
    path("view/", MyView.as_view(size=42)),
]
```

> **Thread safety with view arguments**
>
> 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.

Argumentos passados para  [`as_view()`](/pt-br/4.2/ref/class-based-views/base/#django.views.generic.base.View.as_view) serão atribuidos a instância usada no processamento da requisição. Usando o exemplo anterior, significa que toda requisição on `MyView` é capaz de acessar `self.size`. Os argumentos devem corresponder aos atributos que já existem na classe (retornar `True` na checagem do metodo `hasattr` )

## Visualização Básica vs Genérica

Base class-based views can be thought of as *parent* views, which can be
used by themselves or inherited from. They may not provide all the
capabilities required for projects, in which case there are Mixins which
extend what base views can do.

Django’s generic views are built off of those base views, and were developed
as a shortcut for common usage patterns such as displaying the details of an
object. They take certain common idioms and patterns found in view
development and abstract them so that you can quickly write common views of
data without having to repeat yourself.

Most generic views require the `queryset` key, which is a `QuerySet`
instance; see [Fazendo consultas](/pt-br/4.2/topics/db/queries/) for more information about `QuerySet`
objects.
