---
title: "Views de edição genérica"
version: 3.1
locale: pt-br
source: https://docs.djangoproject.com/pt-br/3.1/ref/class-based-views/generic-editing/
canonical: https://djangodocs.dev/pt-br/3.1/ref/class-based-views/generic-editing/
---
# Views de edição genérica

As seguintes views são descritas nesta pagina e fornece uma base para edição de conteúdo:

- [`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView)
- [`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView)
- [`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView)
- [`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView)

> **See also**
>
> The [messages framework](/pt-br/3.1/ref/contrib/messages/) contains
> [`SuccessMessageMixin`](/pt-br/3.1/ref/contrib/messages/#django.contrib.messages.views.SuccessMessageMixin), which
> facilitates presenting messages about successful form submissions.

> **Note**
>
> Alguns dos exemplos nesta página assumem que um model “Author” foi  defenido como se segue em `myapp/models.py`:
>
> ```
> from django.db import models
> from django.urls import reverse
>
> class Author(models.Model):
>     name = models.CharField(max_length=200)
>
>     def get_absolute_url(self):
>         return reverse('author-detail', kwargs={'pk': self.pk})
> ```

## `FormView`

#### `class django.views.generic.edit.FormView`

É uma view que mostra um formulario. Caso tenha um erro da validação é exibido o formulario com os erros para se corrido. Caso o formulario passe pela validação é direcionado para uma nova URL.

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.base.TemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseFormView`](#django.views.generic.edit.BaseFormView)
- [`django.views.generic.edit.FormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/pt-br/3.1/ref/class-based-views/base/#django.views.generic.base.View)

**Exemplo myapp/forms.py**:

```
from django import forms

class ContactForm(forms.Form):
    name = forms.CharField()
    message = forms.CharField(widget=forms.Textarea)

    def send_email(self):
        # send email using the self.cleaned_data dictionary
        pass
```

**Exemplo myapp/views.py**:

```
from myapp.forms import ContactForm
from django.views.generic.edit import FormView

class ContactView(FormView):
    template_name = 'contact.html'
    form_class = ContactForm
    success_url = '/thanks/'

    def form_valid(self, form):
        # This method is called when valid form data has been POSTed.
        # It should return an HttpResponse.
        form.send_email()
        return super().form_valid(form)
```

**Examplo myapp/contact.html**:

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Send message">
</form>
```

#### `class django.views.generic.edit.BaseFormView`

A base view for displaying a form. It is not intended to be used directly,
but rather as a parent class of the
[`django.views.generic.edit.FormView`](#django.views.generic.edit.FormView) or other views displaying a
form.

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.edit.FormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ProcessFormView`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

## `CreateView`

#### `class django.views.generic.edit.CreateView`

Uma view que exibi um formulário para a criação de um objeto, reexibindo o formulário com errors de validações(se houver algum), e salvando o objeto.

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseCreateView`](#django.views.generic.edit.BaseCreateView)
- [`django.views.generic.edit.ModelFormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/pt-br/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/pt-br/3.1/ref/class-based-views/base/#django.views.generic.base.View)

**Atributos**

#### `template_name_suffix`

A página “CreateView” apresentada após uma requisição do tipo “GET”, utiliza um “template\_name\_suffix” de “\_form”. Ao alterar este atributo  para `'_create_form'`, por exemplo, para uma view que esteja criando objetos para o exemplo “Author” model, faria com que o `template_name` padrão fosse `'myapp/author_create_form.html'`.

#### `object`

Ao utilizar “CreateView”, você tem acesso ao “self.object”, que é o objeto que está sendo criado. Caso o objeto não tenha sido criado ainda, o valor será “None”.

**Exemplo myapp/views.py**:

```
from django.views.generic.edit import CreateView
from myapp.models import Author

class AuthorCreate(CreateView):
    model = Author
    fields = ['name']
```

**Exemplo myapp/author\_form.html**:

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>
```

#### `class django.views.generic.edit.BaseCreateView`

A base view for creating a new object instance. It is not intended to be
used directly, but rather as a parent class of the
[`django.views.generic.edit.CreateView`](#django.views.generic.edit.CreateView).

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.edit.ModelFormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

**Métodos**

#### `get(request, *args, **kwargs)`

Sets the current object instance (`self.object`) to `None`.

#### `post(request, *args, **kwargs)`

Sets the current object instance (`self.object`) to `None`.

## `UpdateView`

#### `class django.views.generic.edit.UpdateView`

Uma view que apresenta um form para editar um objeto existente, reapresentando este form com erros de validação (caso exista algum) e salvando as alterações no objeto. Aqui será utilizado um form que foi  gerado automaticamente à partir da classe definida no “model” (à menos que seja manualmente especificada uma class que esteja definida em form).

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseUpdateView`](#django.views.generic.edit.BaseUpdateView)
- [`django.views.generic.edit.ModelFormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.FormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/pt-br/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.edit.ProcessFormView`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.base.View`](/pt-br/3.1/ref/class-based-views/base/#django.views.generic.base.View)

**Atributos**

#### `template_name_suffix`

A página “UpdateView” que é mostrada após uma requisição “GET”, utiliza um  “emplate\_name\_suffix” de `'_form'`. Caso este atributo fosse alterado para `'_update_form'`,  para uma view que esteja atualizando objetos de um model “Author”,  por exemplo, faria com que o `template_name` fosse `'myapp/author_update_form.html'`.

#### `object`

Ao utilizar “UpdateView”, você tem acesso ao “self.object”, que é o objeto que está sendo atualizado.

**Exemplo myapp/views.py**:

```
from django.views.generic.edit import UpdateView
from myapp.models import Author

class AuthorUpdate(UpdateView):
    model = Author
    fields = ['name']
    template_name_suffix = '_update_form'
```

**Exemplo myapp/author\_update\_form.html**:

```html+django
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update">
</form>
```

#### `class django.views.generic.edit.BaseUpdateView`

A base view for updating an existing object instance. It is not intended to
be used directly, but rather as a parent class of the
[`django.views.generic.edit.UpdateView`](#django.views.generic.edit.UpdateView).

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.edit.ModelFormMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.ProcessFormView)

**Métodos**

#### `get(request, *args, **kwargs)`

Sets the current object instance (`self.object`).

#### `post(request, *args, **kwargs)`

Sets the current object instance (`self.object`).

## `DeleteView`

#### `class django.views.generic.edit.DeleteView`

Uma view que apresenta uma página de confirmação e deleta um objeto existente. O dado objeto, será somente deletado se o tipo de request for “POST”. Caso esta mesma view receba um request do tipo “GET”, será apresentada uma página de confirmação que deverá conter um form que será retornada para a mesma URL.

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.detail.SingleObjectTemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectTemplateResponseMixin)
- [`django.views.generic.base.TemplateResponseMixin`](/pt-br/3.1/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)
- [`django.views.generic.edit.BaseDeleteView`](#django.views.generic.edit.BaseDeleteView)
- [`django.views.generic.edit.DeletionMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.detail.BaseDetailView`](/pt-br/3.1/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
- [`django.views.generic.detail.SingleObjectMixin`](/pt-br/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)
- [`django.views.generic.base.View`](/pt-br/3.1/ref/class-based-views/base/#django.views.generic.base.View)

**Atributos**

#### `template_name_suffix`

The `DeleteView` page displayed to a `GET` request uses a
`template_name_suffix` of `'_confirm_delete'`. For
example, changing this attribute to `'_check_delete'` for a view
deleting objects for the example `Author` model would cause the
default `template_name` to be `'myapp/author_check_delete.html'`.

**Exemplo myapp/views.py**:

```
from django.urls import reverse_lazy
from django.views.generic.edit import DeleteView
from myapp.models import Author

class AuthorDelete(DeleteView):
    model = Author
    success_url = reverse_lazy('author-list')
```

**Exemplo myapp/author\_confirm\_delete.html**:

```html+django
<form method="post">{% csrf_token %}
    <p>Are you sure you want to delete "{{ object }}"?</p>
    <input type="submit" value="Confirm">
</form>
```

#### `class django.views.generic.edit.BaseDeleteView`

A base view for deleting an object instance. It is not intended to be used
directly, but rather as a parent class of the
[`django.views.generic.edit.DeleteView`](#django.views.generic.edit.DeleteView).

**Ancestrais (MRO)**

Essa “view” herda métodos e atributos das seguintes “views”:

- [`django.views.generic.edit.DeletionMixin`](/pt-br/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin)
- [`django.views.generic.detail.BaseDetailView`](/pt-br/3.1/ref/class-based-views/generic-display/#django.views.generic.detail.BaseDetailView)
