Prechádzať zdrojové kódy

Fixed #17378 - Added a flattened index for class-based views.

Thanks Preston Holmes for the patch.
Tim Graham 12 rokov pred
rodič
commit
5faadea439

+ 2 - 1
docs/index.txt

@@ -108,7 +108,8 @@ to know about views via the links below:
   :doc:`Built-in display views <topics/class-based-views/generic-display>` |
   :doc:`Built-in editing views <topics/class-based-views/generic-editing>` |
   :doc:`Using mixins <topics/class-based-views/mixins>` |
-  :doc:`API reference <ref/class-based-views/index>`
+  :doc:`API reference <ref/class-based-views/index>` |
+  :doc:`Flattened index<ref/class-based-views/flattened-index>`
 
 * **Advanced:**
   :doc:`Generating CSV <howto/outputting-csv>` |

+ 556 - 0
docs/ref/class-based-views/flattened-index.txt

@@ -0,0 +1,556 @@
+===========================================
+Class-based generic views - flattened index
+===========================================
+
+This index provides an alternate organization of the reference documentation
+for class-based views. For each view, the effective attributes and methods from
+the class tree are represented under that view. For the reference
+documentation organized by the class which defines the behavior, see
+:doc:`Class-based views</ref/class-based-views/index>`
+
+Simple generic views
+--------------------
+
+View
+~~~~
+.. class:: View()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.base.View.http_method_names`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+
+TemplateView
+~~~~~~~~~~~~
+.. class:: TemplateView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.base.TemplateView.get`
+* :meth:`~django.views.generic.base.TemplateView.get_context_data`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+RedirectView
+~~~~~~~~~~~~
+.. class:: RedirectView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.base.RedirectView.permanent`
+* :attr:`~django.views.generic.base.RedirectView.query_string`
+* :attr:`~django.views.generic.base.RedirectView.url`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.RedirectView.delete`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.base.RedirectView.get`
+* :meth:`~django.views.generic.base.RedirectView.get_redirect_url`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.base.RedirectView.options`
+* :meth:`~django.views.generic.base.RedirectView.post`
+* :meth:`~django.views.generic.base.RedirectView.put`
+
+Detail Views
+------------
+
+DetailView
+~~~~~~~~~~
+.. class:: DetailView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.model`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.detail.BaseDetailView.get`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+List Views
+----------
+
+ListView
+~~~~~~~~
+.. class:: ListView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.list.BaseListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+Editing views
+-------------
+
+FormView
+~~~~~~~~
+.. class:: FormView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.edit.FormMixin.form_class` [:meth:`~django.views.generic.edit.FormMixin.get_form_class`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.edit.FormMixin.initial` [:meth:`~django.views.generic.edit.FormMixin.get_initial`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.edit.FormMixin.success_url` [:meth:`~django.views.generic.edit.FormMixin.get_success_url`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
+* :meth:`~django.views.generic.edit.FormMixin.form_valid`
+* :meth:`~django.views.generic.edit.ProcessFormView.get`
+* :meth:`~django.views.generic.edit.FormMixin.get_context_data`
+* :meth:`~django.views.generic.edit.FormMixin.get_form`
+* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.edit.ProcessFormView.post`
+* :meth:`~django.views.generic.edit.ProcessFormView.put`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+CreateView
+~~~~~~~~~~
+.. class:: CreateView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.edit.FormMixin.form_class` [:meth:`~django.views.generic.edit.FormMixin.get_form_class`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.edit.FormMixin.initial` [:meth:`~django.views.generic.edit.FormMixin.get_initial`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.model`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`
+* :attr:`~django.views.generic.edit.FormMixin.success_url` [:meth:`~django.views.generic.edit.FormMixin.get_success_url`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
+* :meth:`~django.views.generic.edit.FormMixin.form_valid`
+* :meth:`~django.views.generic.edit.ProcessFormView.get`
+* :meth:`~django.views.generic.edit.FormMixin.get_context_data`
+* :meth:`~django.views.generic.edit.FormMixin.get_form`
+* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.edit.ProcessFormView.post`
+* :meth:`~django.views.generic.edit.ProcessFormView.put`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+UpdateView
+~~~~~~~~~~
+.. class:: UpdateView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.edit.FormMixin.form_class` [:meth:`~django.views.generic.edit.FormMixin.get_form_class`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.edit.FormMixin.initial` [:meth:`~django.views.generic.edit.FormMixin.get_initial`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.model`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`
+* :attr:`~django.views.generic.edit.FormMixin.success_url` [:meth:`~django.views.generic.edit.FormMixin.get_success_url`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
+* :meth:`~django.views.generic.edit.FormMixin.form_valid`
+* :meth:`~django.views.generic.edit.ProcessFormView.get`
+* :meth:`~django.views.generic.edit.FormMixin.get_context_data`
+* :meth:`~django.views.generic.edit.FormMixin.get_form`
+* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.edit.ProcessFormView.post`
+* :meth:`~django.views.generic.edit.ProcessFormView.put`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+DeleteView
+~~~~~~~~~~
+.. class:: DeleteView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.model`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`
+* :attr:`~django.views.generic.edit.DeletionMixin.success_url` [:meth:`~django.views.generic.edit.DeletionMixin.get_success_url`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.edit.DeletionMixin.delete`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.detail.BaseDetailView.get`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.edit.DeletionMixin.post`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+Date-based views
+----------------
+
+ArchiveIndexView
+~~~~~~~~~~~~~~~~
+.. class:: ArchiveIndexView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.dates.BaseDateListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+YearArchiveView
+~~~~~~~~~~~~~~~
+.. class:: YearArchiveView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.dates.BaseYearArchiveView.make_object_list` [:meth:`~django.views.generic.dates.BaseYearArchiveView.get_make_object_list`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]
+* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.dates.BaseDateListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+MonthArchiveView
+~~~~~~~~~~~~~~~~
+.. class:: MonthArchiveView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]
+* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]
+* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.dates.BaseDateListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`
+* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+WeekArchiveView
+~~~~~~~~~~~~~~~
+.. class:: WeekArchiveView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+* :attr:`~django.views.generic.dates.WeekMixin.week` [:meth:`~django.views.generic.dates.WeekMixin.get_week`]
+* :attr:`~django.views.generic.dates.WeekMixin.week_format` [:meth:`~django.views.generic.dates.WeekMixin.get_week_format`]
+* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]
+* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.dates.BaseDateListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+DayArchiveView
+~~~~~~~~~~~~~~
+.. class:: DayArchiveView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.dates.DayMixin.day` [:meth:`~django.views.generic.dates.DayMixin.get_day`]
+* :attr:`~django.views.generic.dates.DayMixin.day_format` [:meth:`~django.views.generic.dates.DayMixin.get_day_format`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]
+* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]
+* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.dates.BaseDateListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`
+* :meth:`~django.views.generic.dates.DayMixin.get_next_day`
+* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.dates.DayMixin.get_previous_day`
+* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+TodayArchiveView
+~~~~~~~~~~~~~~~~
+.. class:: TodayArchiveView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.list.MultipleObjectMixin.allow_empty` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_allow_empty`]
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.context_object_name` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.dates.DayMixin.day` [:meth:`~django.views.generic.dates.DayMixin.get_day`]
+* :attr:`~django.views.generic.dates.DayMixin.day_format` [:meth:`~django.views.generic.dates.DayMixin.get_day_format`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.model`
+* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]
+* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginate_by` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_paginate_by`]
+* :attr:`~django.views.generic.list.MultipleObjectMixin.paginator_class`
+* :attr:`~django.views.generic.list.MultipleObjectMixin.queryset` [:meth:`~django.views.generic.list.MultipleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.list.MultipleObjectTemplateResponseMixin.template_name_suffix`
+* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]
+* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.dates.BaseDateListView.get`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_date_list`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_items`
+* :meth:`~django.views.generic.dates.BaseDateListView.get_dated_queryset`
+* :meth:`~django.views.generic.dates.DayMixin.get_next_day`
+* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.get_paginator`
+* :meth:`~django.views.generic.dates.DayMixin.get_previous_day`
+* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.list.MultipleObjectMixin.paginate_queryset`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`
+
+DateDetailView
+~~~~~~~~~~~~~~
+.. class:: DateDetailView()
+
+**Attributes** (with optional accessor):
+
+* :attr:`~django.views.generic.dates.DateMixin.allow_future` [:meth:`~django.views.generic.dates.DateMixin.get_allow_future`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.context_object_name` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_context_object_name`]
+* :attr:`~django.views.generic.dates.DateMixin.date_field` [:meth:`~django.views.generic.dates.DateMixin.get_date_field`]
+* :attr:`~django.views.generic.dates.DayMixin.day` [:meth:`~django.views.generic.dates.DayMixin.get_day`]
+* :attr:`~django.views.generic.dates.DayMixin.day_format` [:meth:`~django.views.generic.dates.DayMixin.get_day_format`]
+* :attr:`~django.views.generic.base.View.http_method_names`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.model`
+* :attr:`~django.views.generic.dates.MonthMixin.month` [:meth:`~django.views.generic.dates.MonthMixin.get_month`]
+* :attr:`~django.views.generic.dates.MonthMixin.month_format` [:meth:`~django.views.generic.dates.MonthMixin.get_month_format`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.pk_url_kwarg`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_queryset`]
+* :attr:`~django.views.generic.base.TemplateResponseMixin.response_class`
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_field` [:meth:`~django.views.generic.detail.SingleObjectMixin.get_slug_field`]
+* :attr:`~django.views.generic.detail.SingleObjectMixin.slug_url_kwarg`
+* :attr:`~django.views.generic.base.TemplateResponseMixin.template_name` [:meth:`~django.views.generic.base.TemplateResponseMixin.get_template_names`]
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_field`
+* :attr:`~django.views.generic.detail.SingleObjectTemplateResponseMixin.template_name_suffix`
+* :attr:`~django.views.generic.dates.YearMixin.year` [:meth:`~django.views.generic.dates.YearMixin.get_year`]
+* :attr:`~django.views.generic.dates.YearMixin.year_format` [:meth:`~django.views.generic.dates.YearMixin.get_year_format`]
+
+**Methods**
+
+* :meth:`~django.views.generic.base.View.as_view`
+* :meth:`~django.views.generic.base.View.dispatch`
+* :meth:`~django.views.generic.detail.BaseDetailView.get`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data`
+* :meth:`~django.views.generic.dates.DayMixin.get_next_day`
+* :meth:`~django.views.generic.dates.MonthMixin.get_next_month`
+* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
+* :meth:`~django.views.generic.dates.DayMixin.get_previous_day`
+* :meth:`~django.views.generic.dates.MonthMixin.get_previous_month`
+* :meth:`~django.views.generic.base.View.head`
+* :meth:`~django.views.generic.base.View.http_method_not_allowed`
+* :meth:`~django.views.generic.base.TemplateResponseMixin.render_to_response`

+ 1 - 0
docs/ref/class-based-views/index.txt

@@ -13,6 +13,7 @@ Class-based views API reference. For introductory material, see
    generic-editing
    generic-date-based
    mixins
+   flattened-index
 
 Specification
 -------------