API nativa de views baseadas em classes¶
Documentação de API de views baseada em classes. Para uma introdução, veja Class-based views topic guide.
- “Views” de base
- Views de exibição genéricas
- Views de edição genérica
- “Views” de datas genéricas
- Class-based views mixins
- “Views” genéricas baseadas em classes - índice linear
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 )
A class-based view is deployed into a URL pattern using the
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.
Arguments passed into as_view() will
be assigned onto the instance that is used to service a request. Using the
previous example, this means that every request on MyView is able to use
self.size. Arguments must correspond to attributes that already exist on
the class (return True on a hasattr check).
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 for more information about QuerySet
objects.