====================Single object mixins====================``SingleObjectMixin``=====================.. class:: django.views.generic.detail.SingleObjectMixinProvides a mechanism for looking up an object associated with thecurrent HTTP request.**Methods and Attributes**.. attribute:: modelThe model that this view will display data for. Specifying ``model= Foo`` is effectively the same as specifying ``queryset =Foo.objects.all()``, where ``objects`` stands for ``Foo``’s:ref:`default manager <default-managers>`... attribute:: querysetA ``QuerySet`` that represents the objects. If provided, the value of``queryset`` supersedes the value provided for :attr:`model`... warning::``queryset`` is a class attribute with a *mutable* value so caremust be taken when using it directly. Before using it, either callits :meth:`~django.db.models.query.QuerySet.all` method orretrieve it with :meth:`get_queryset` which takes care of thecloning behind the scenes... attribute:: slug_fieldThe name of the field on the model that contains the slug. By default,``slug_field`` is ``'slug'``... attribute:: slug_url_kwargThe name of the URLConf keyword argument that contains the slug. Bydefault, ``slug_url_kwarg`` is ``'slug'``... attribute:: pk_url_kwargThe name of the URLConf keyword argument that contains the primary key.By default, ``pk_url_kwarg`` is ``'pk'``... attribute:: context_object_nameDesignates the name of the variable to use in the context... attribute:: query_pk_and_slugIf ``True``, causes :meth:`get_object()` to perform its lookup usingboth the primary key and the slug. Defaults to ``False``.This attribute can help mitigate `insecure direct object reference`_attacks. When applications allow access to individual objects by asequential primary key, an attacker could brute-force guess all URLs;thereby obtaining a list of all objects in the application. If userswith access to individual objects should be prevented from obtainingthis list, setting ``query_pk_and_slug`` to ``True`` will help preventthe guessing of URLs as each URL will require two correct,non-sequential arguments. Using a unique slug may serve the samepurpose, but this scheme allows you to have non-unique slugs... _insecure direct object reference: https://wiki.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References.. method:: get_object(queryset=None)Returns the single object that this view will display. If ``queryset``is provided, that queryset will be used as the source of objects;otherwise, :meth:`get_queryset` will be used. ``get_object()`` looksfor a :attr:`pk_url_kwarg` argument in the arguments to the view; ifthis argument is found, this method performs a primary-key based lookupusing that value. If this argument is not found, it looks for a:attr:`slug_url_kwarg` argument, and performs a slug lookup using the:attr:`slug_field`.When :attr:`query_pk_and_slug` is ``True``, ``get_object()`` willperform its lookup using both the primary key and the slug... method:: get_queryset()Returns the queryset that will be used to retrieve the object thatthis view will display. By default, :meth:`get_queryset` returns thevalue of the :attr:`queryset` attribute if it is set, otherwiseit constructs a :class:`~django.db.models.query.QuerySet` by callingthe ``all()`` method on the :attr:`model` attribute's default manager... method:: get_context_object_name(obj)Return the context variable name that will be used to contain thedata that this view is manipulating. If :attr:`context_object_name` isnot set, the context name will be constructed from the ``model_name``of the model that the queryset is composed from. For example, the model``Article`` would have context object named ``'article'``... method:: get_context_data(**kwargs)Returns context data for displaying 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 ifyou 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 underthe name returned by :meth:`get_context_object_name`, which defaultsto the lowercased version of the model name... admonition:: Context variables override values from template context processorsAny variables from :meth:`get_context_data` take precedence overcontext variables from :ref:`context processors<subclassing-context-requestcontext>`. For example, if your viewsets the :attr:`model` attribute to:class:`~django.contrib.auth.models.User`, the default contextobject name of ``user`` would override the ``user`` variable fromthe :func:`django.contrib.auth.context_processors.auth` contextprocessor. 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. Bydefault this returns the value of :attr:`slug_field`.``SingleObjectTemplateResponseMixin``=====================================.. class:: django.views.generic.detail.SingleObjectTemplateResponseMixinA mixin class that performs template-based response rendering for viewsthat operate upon a single object instance. Requires that the view it ismixed with provides ``self.object``, the object instance that the view isoperating on. ``self.object`` will usually be, but is not required to be,an instance of a Django model. It may be ``None`` if the view is in theprocess of constructing a new instance.**Extends*** :class:`~django.views.generic.base.TemplateResponseMixin`**Methods and Attributes**.. attribute:: template_name_fieldThe field on the current object instance that can be used to determinethe name of a candidate template. If either ``template_name_field``itself or the value of the ``template_name_field`` on the currentobject instance is ``None``, the object will not be used for acandidate template name... attribute:: template_name_suffixThe suffix to append to the auto-generated candidate template name.Default suffix is ``_detail``... method:: get_template_names()Returns a list of candidate template names. Returns the following list:* the value of ``template_name`` on the view (if provided)* the contents of the ``template_name_field`` field on theobject instance that the view is operating upon (if available)* ``<app_label>/<model_name><template_name_suffix>.html``