generic-display.txt 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. =====================
  2. Generic display views
  3. =====================
  4. The two following generic class-based views are designed to display data. On
  5. many projects they are typically the most commonly used views.
  6. DetailView
  7. ----------
  8. .. class:: django.views.generic.detail.DetailView
  9. While this view is executing, ``self.object`` will contain the object that
  10. the view is operating upon.
  11. **Ancestors (MRO)**
  12. This view inherits methods and attributes from the following views:
  13. * :class:`django.views.generic.detail.SingleObjectTemplateResponseMixin`
  14. * :class:`django.views.generic.base.TemplateResponseMixin`
  15. * :class:`django.views.generic.detail.BaseDetailView`
  16. * :class:`django.views.generic.detail.SingleObjectMixin`
  17. * :class:`django.views.generic.base.View`
  18. **Method Flowchart**
  19. 1. :meth:`dispatch()`
  20. 2. :meth:`http_method_not_allowed()`
  21. 3. :meth:`get_template_names()`
  22. 4. :meth:`get_slug_field()`
  23. 5. :meth:`get_queryset()`
  24. 6. :meth:`get_object()`
  25. 7. :meth:`get_context_object_name()`
  26. 8. :meth:`get_context_data()`
  27. 9. :meth:`get()`
  28. 10. :meth:`render_to_response()`
  29. **Example views.py**::
  30. from django.views.generic.detail import DetailView
  31. from django.utils import timezone
  32. from articles.models import Article
  33. class ArticleDetailView(DetailView):
  34. model = Article
  35. def get_context_data(self, **kwargs):
  36. context = super(ArticleDetailView, self).get_context_data(**kwargs)
  37. context['now'] = timezone.now()
  38. return context
  39. **Example urls.py**::
  40. from django.conf.urls import patterns, url
  41. from article.views import ArticleDetailView
  42. urlpatterns = patterns('',
  43. url(r'^(?P<slug>[-_\w]+)/$', ArticleDetailView.as_view(), name='article-detail'),
  44. )
  45. ListView
  46. --------
  47. .. class:: django.views.generic.list.ListView
  48. A page representing a list of objects.
  49. While this view is executing, ``self.object_list`` will contain the list of
  50. objects (usually, but not necessarily a queryset) that the view is
  51. operating upon.
  52. **Ancestors (MRO)**
  53. This view inherits methods and attributes from the following views:
  54. * :class:`django.views.generic.list.ListView`
  55. * :class:`django.views.generic.list.MultipleObjectTemplateResponseMixin`
  56. * :class:`django.views.generic.base.TemplateResponseMixin`
  57. * :class:`django.views.generic.list.BaseListView`
  58. * :class:`django.views.generic.list.MultipleObjectMixin`
  59. * :class:`django.views.generic.base.View`
  60. **Method Flowchart**
  61. 1. :meth:`dispatch()`
  62. 2. :meth:`http_method_not_allowed()`
  63. 3. :meth:`get_template_names()`
  64. 4. :meth:`get_queryset()`
  65. 5. :meth:`get_objects()`
  66. 6. :meth:`get_context_data()`
  67. 7. :meth:`get()`
  68. 8. :meth:`render_to_response()`
  69. **Example views.py**::
  70. from django.views.generic.list import ListView
  71. from django.utils import timezone
  72. from articles.models import Article
  73. class ArticleListView(ListView):
  74. model = Article
  75. def get_context_data(self, **kwargs):
  76. context = super(ArticleListView, self).get_context_data(**kwargs)
  77. context['now'] = timezone.now()
  78. return context
  79. **Example urls.py**::
  80. from django.conf.urls import patterns, url
  81. from article.views import ArticleListView
  82. urlpatterns = patterns('',
  83. url(r'^$', ArticleListView.as_view(), name='article-list'),
  84. )
  85. .. class:: django.views.generic.list.BaseListView
  86. A base view for displaying a list of objects. It is not intended to be used
  87. directly, but rather as a parent class of the
  88. :class:`django.views.generic.list.ListView` or other views representing
  89. lists of objects.
  90. **Ancestors (MRO)**
  91. This view inherits methods and attributes from the following views:
  92. * :class:`django.views.generic.list.MultipleObjectMixin`
  93. * :class:`django.views.generic.base.View`
  94. **Methods**
  95. .. method:: get(request, *args, **kwargs)
  96. Adds :attr:`object_list` to the context. If
  97. :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty`
  98. is True then display an empty list. If
  99. :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` is
  100. False then raise a 404 error.