Commit d83454fb authored by Jacek Bzdak's avatar Jacek Bzdak Committed by Tim Graham
Browse files

[1.8.x] Fixed #25397 -- Documented class-based view context variable clash with context processors.

Backport of 494b7986 from master
parent 41583754
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -106,20 +106,34 @@ SingleObjectMixin

        Returns context data for displaying the list of objects.

        The base implementation of this method requires that the ``object``
        The base implementation of this method requires that the ``self.object``
        attribute be set by the view (even if ``None``). Be sure to do this if
        you are using this mixin without one of the built-in views that does so.

        It returns a dictionary with these contents:

        * ``object``: The object that this view is displaying
          (``self.object``).
        * ``context_object_name``: ``self.object`` will also be stored under
          the name returned by :meth:`get_context_object_name`, which defaults
          to the lowercased version of the model name.

        .. admonition:: Context variables override values from template context processors

            Any variables from :meth:`get_context_data` take precedence over
            context variables from :ref:`context processors
            <subclassing-context-requestcontext>`. For example, if your view
            sets the :attr:`model` attribute to
            :class:`~django.contrib.auth.models.User`, the default context
            object name of ``user`` would override the ``user`` variable from
            the :func:`django.contrib.auth.context_processors.auth` context
            processor. Use :meth:`get_context_object_name` to avoid a clash.

    .. method:: get_slug_field()

        Returns the name of a slug field to be used to look up by slug. By
        default this simply returns the value of :attr:`slug_field`.

    **Context**

    * ``object``: The object that this view is displaying. If
      ``context_object_name`` is specified, that variable will also be
      set in the context, with the same value as ``object``.

SingleObjectTemplateResponseMixin
---------------------------------
+4 −0
Original line number Diff line number Diff line
@@ -638,9 +638,13 @@ Context processors

Here's what each of the built-in processors does:

.. currentmodule:: django.contrib.auth.context_processors

django.contrib.auth.context_processors.auth
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. function:: auth

If this processor is enabled, every ``RequestContext`` will contain these
variables:

+5 −0
Original line number Diff line number Diff line
@@ -237,6 +237,11 @@ template, but you can override it to send more::
    after super if they want to be sure to override all parents. If you're
    having trouble, review the method resolution order of your view.

    Another consideration is that the context data from class-based generic
    views will override data provided by context processors; see
    :meth:`~django.views.generic.detail.SingleObjectMixin.get_context_data` for
    an example.

.. _generic-views-list-subsets:

Viewing subsets of objects