Django documentation

  • 1.5
  • Documentation version: development

Generic display views

The two following generic class-based views are designed to display data. On many projects they are typically the most commonly used views.

DetailView

class django.views.generic.detail.DetailView

While this view is executing, self.object will contain the object that the view is operating upon.

Ancestors (MRO)

This view inherits methods and attributes from the following views:

Method Flowchart

  1. dispatch()
  2. http_method_not_allowed()
  3. get_template_names()
  4. get_slug_field()
  5. get_queryset()
  6. get_object()
  7. get_context_object_name()
  8. get_context_data()
  9. get()
  10. render_to_response()

Example myapp/views.py:

from django.views.generic.detail import DetailView from django.utils import timezone  from articles.models import Article  class ArticleDetailView(DetailView):      model = Article      def get_context_data(self, **kwargs):         context = super(ArticleDetailView, self).get_context_data(**kwargs)         context['now'] = timezone.now()         return context 

Example myapp/urls.py:

from django.conf.urls import patterns, url  from article.views import ArticleDetailView  urlpatterns = patterns('',     url(r'^(?P<slug>[-_\w]+)/$', ArticleDetailView.as_view(), name='article-detail'), ) 

Example 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> 

ListView

class django.views.generic.list.ListView

A page representing a list of objects.

While this view is executing, self.object_list will contain the list of objects (usually, but not necessarily a queryset) that the view is operating upon.

Ancestors (MRO)

This view inherits methods and attributes from the following views:

Method Flowchart

  1. dispatch()
  2. http_method_not_allowed()
  3. get_template_names()
  4. get_queryset()
  5. get_context_object_name()
  6. get_context_data()
  7. get()
  8. render_to_response()

Example views.py:

from django.views.generic.list import ListView from django.utils import timezone  from articles.models import Article  class ArticleListView(ListView):      model = Article      def get_context_data(self, **kwargs):         context = super(ArticleListView, self).get_context_data(**kwargs)         context['now'] = timezone.now()         return context 

Example myapp/urls.py:

from django.conf.urls import patterns, url  from article.views import ArticleListView  urlpatterns = patterns('',     url(r'^$', ArticleListView.as_view(), name='article-list'), ) 

Example 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> 
class django.views.generic.list.BaseListView

A base view for displaying a list of objects. It is not intended to be used directly, but rather as a parent class of the django.views.generic.list.ListView or other views representing lists of objects.

Ancestors (MRO)

This view inherits methods and attributes from the following views:

Methods

get(request, *args, **kwargs)

Adds object_list to the context. If allow_empty is True then display an empty list. If allow_empty is False then raise a 404 error.

Questions/Feedback

Having trouble? We'd like to help!

This document is for Django's development version, which can be significantly different from previous releases. For older releases, use the version selector floating in the bottom right corner of this page.