As seguintes views são descritas nesta pagina e fornece uma base para edição de conteúdo:
django.views.generic.edit.FormViewdjango.views.generic.edit.CreateViewdjango.views.generic.edit.UpdateViewdjango.views.generic.edit.DeleteViewVer também
The messages framework contains
SuccessMessageMixin, which
facilitates presenting messages about successful form submissions.
Nota
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¶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.TemplateResponseMixindjango.views.generic.edit.BaseFormViewdjango.views.generic.edit.FormMixindjango.views.generic.edit.ProcessFormViewdjango.views.generic.base.ViewExemplo 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:
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Send message">
</form>
CreateView¶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.SingleObjectTemplateResponseMixindjango.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseCreateViewdjango.views.generic.edit.ModelFormMixindjango.views.generic.edit.FormMixindjango.views.generic.detail.SingleObjectMixindjango.views.generic.edit.ProcessFormViewdjango.views.generic.base.ViewAtributos
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:
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save">
</form>
UpdateView¶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.SingleObjectTemplateResponseMixindjango.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseUpdateViewdjango.views.generic.edit.ModelFormMixindjango.views.generic.edit.FormMixindjango.views.generic.detail.SingleObjectMixindjango.views.generic.edit.ProcessFormViewdjango.views.generic.base.ViewAtributos
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:
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update">
</form>
DeleteView¶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.SingleObjectTemplateResponseMixindjango.views.generic.base.TemplateResponseMixindjango.views.generic.edit.BaseDeleteViewdjango.views.generic.edit.DeletionMixindjango.views.generic.detail.BaseDetailViewdjango.views.generic.detail.SingleObjectMixindjango.views.generic.base.ViewAtributos
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:
<form method="post">{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
<input type="submit" value="Confirm">
</form>
ago 03, 2020