Las dos siguientes vistas de clase basadas en el patrón genérico están diseñadas para mostrar datos. En muchos proyectos, suelen ser las vistas más comúnmente utilizadas.
DetailView¶Mientras se ejecuta esta vista, self.object contendrá el objeto sobre el que está operando la vista.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Diagrama de flujo de métodos
Ejemplo myapp/views.py:
from django.utils import timezone
from django.views.generic.detail import DetailView
from articles.models import Article
class ArticleDetailView(DetailView):
model = Article
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["now"] = timezone.now()
return context
Ejemplo myapp/urls.py:
from django.urls import path
from article.views import ArticleDetailView
urlpatterns = [
path("<slug:slug>/", ArticleDetailView.as_view(), name="article-detail"),
]
Ejemplo myapp/article_detail.html:
<h1>{{ object.headline }}</h1>
<p>{{ object.content }}</p>
<p>Reporter: {{ object.reporter }}</p>
<p>Published: {{ object.pub_date|date }}</p>
<p>Date: {{ now|date }}</p>
Vista base para mostrar un objeto único. No se debe utilizar directamente, sino como clase padre de la django.views.generic.detail.DetailView o otras vistas que representan detalles de un objeto único.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Métodos
Agrega object al contexto.
ListView¶Una página que representa una lista de objetos.
Mientras se ejecuta esta vista, self.object_list contendrá la lista de objetos (generalmente, pero no necesariamente un queryset) sobre los que está operando la vista.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Diagrama de flujo de métodos
**Ejemplo views.py:
from django.utils import timezone
from django.views.generic.list import ListView
from articles.models import Article
class ArticleListView(ListView):
model = Article
paginate_by = 100 # if pagination is desired
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["now"] = timezone.now()
return context
Ejemplo myapp/urls.py:
from django.urls import path
from article.views import ArticleListView
urlpatterns = [
path("", ArticleListView.as_view(), name="article-list"),
]
Ejemplo myapp/article_list.html:
<h1>Articles</h1>
<ul>
{% for article in object_list %}
<li>{{ article.pub_date|date }} - {{ article.headline }}</li>
{% empty %}
<li>No articles yet.</li>
{% endfor %}
</ul>
Si estás utilizando la paginación, puedes adaptar el ejemplo de plantilla del documento de paginación.
Una vista base para mostrar una lista de objetos. No se pretende utilizar directamente, sino como clase padre de la django.views.generic.list.ListView o otras vistas que representan listas de objetos.
Ancestros (MRO)
Esta vista hereda métodos y atributos de las siguientes vistas:
Métodos
Agrega object_list al contexto. Si allow_empty es True muestra una lista vacía. Si allow_empty es False lanza un error 404.
may 31, 2026