Las siguientes vistas se describen en esta página y proporcionan una base para editar contenido:
Ver también
La framework de mensajes contiene SuccessMessageMixin, que facilita la presentación de mensajes sobre las solicitudes de formulario exitosas.
Nota
Algunas de las ejemplos en esta página asumen que un modelo Author se ha definido como sigue en 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})
Una vista que muestra un formulario. Al producirse un error, vuelve a mostrar el formulario con errores de validación; con éxito, redirige a una nueva URL.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Ejemplo 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
Ejemplo myapp/views.py:
from myapp.forms import ContactForm
from django.views.generic.edit import FormView
class ContactFormView(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)
Ejemplo myapp/contact.html:
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Send message">
</form>
Vista base para mostrar un formulario. No se pretende utilizarla directamente, sino como clase padre de la django.views.generic.edit.FormView o otras vistas que muestren un formulario.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Vista que muestra un formulario para crear un objeto, redirigiendo el formulario con errores de validación (si los hay) y guardando el objeto.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Atributos
La página CreateView mostrada a una solicitud GET utiliza un sufijo de nombre de plantilla de '_form'. Por ejemplo, cambiando este atributo a '_create_form' para una vista que crea objetos para el modelo de ejemplo Author causaría que la plantilla por defecto fuera 'myapp/author_create_form.html'.
Al utilizar CreateView tienes acceso a self.object, que es el objeto que se está creando. Si el objeto aún no ha sido creado, su valor será None.
Ejemplo myapp/views.py:
from django.views.generic.edit import CreateView
from myapp.models import Author
class AuthorCreateView(CreateView):
model = Author
fields = ["name"]
Ejemplo: myapp/author_form.html
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save">
</form>
Vista base para crear una instancia de objeto nuevo. No está destinado a ser utilizado directamente, sino más bien como clase padre de la :class:`django.views.generic.edit.CreateView.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Métodos
Establece la instancia actual del objeto (self.object) a None.
Establece la instancia actual del objeto (self.object) a None.
ActualizarView¶Una vista que muestra un formulario para editar un objeto existente, volviendo a mostrar el formulario con errores de validación (si los hay) y guardando cambios en el objeto. Esto utiliza un formulario generado automáticamente desde la clase del modelo del objeto (a menos que se especifique una clase de formulario manualmente).
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Atributos
La página de UpdateView que se muestra en respuesta a una solicitud GET utiliza un sufijo de nombre de plantilla de template_name_suffix de “form”. Por ejemplo, cambiando esta atributo a “update_form” para una vista que actualiza objetos del modelo de ejemplo Author causaría el nombre de plantilla predeterminado ser “myapp/author_update_form.html”.
Cuando se utiliza UpdateView tienes acceso a self.object, que es el objeto que está siendo actualizado.
Ejemplo myapp/views.py:
from django.views.generic.edit import UpdateView
from myapp.models import Author
class AuthorUpdateView(UpdateView):
model = Author
fields = ["name"]
template_name_suffix = "_update_form"
Ejemplo: myapp/author_update_form.html
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update">
</form>
Vista base para actualizar una instancia de objeto existente. No se debe utilizar directamente, sino como clase padre de la django.views.generic.edit.UpdateView.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Métodos
Establece la instancia actual del objeto (self.object).
Establece la instancia actual del objeto (self.object).
EliminarView¶Los textos traducidos son:
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Atributos
Herencia de BaseDeleteView. La clase de formulario que se utilizará para confirmar la solicitud. Por defecto, django.forms.Form, lo que resulta en un formulario vacío que siempre es válido.
Al proporcionar tu propia subclase Form, puedes agregar requisitos adicionales, como por ejemplo una casilla de verificación de confirmación.
La página DeleteView mostrada a una solicitud GET utiliza un sufijo de nombre de plantilla de '_confirm_delete'. Por ejemplo, cambiando este atributo a '_check_delete' para una vista que elimina objetos del modelo de ejemplo Author causaría el nombre de plantilla predeterminado ser 'myapp/author_check_delete.html'.
Ejemplo myapp/views.py:
from django.urls import reverse_lazy
from django.views.generic.edit import DeleteView
from myapp.models import Author
class AuthorDeleteView(DeleteView):
model = Author
success_url = reverse_lazy("author-list")
Ejemplo myapp/author_confirm_delete.html
<form method="post">{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
{{ form }}
<input type="submit" value="Confirm">
</form>
Una vista base para eliminar una instancia de objeto. No se pretende utilizar directamente, sino más bien como clase padre de la django.views.generic.edit.DeleteView.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
may 31, 2026