---
title: "Simple mixins"
version: 2.0
locale: el
source: https://docs.djangoproject.com/el/2.0/ref/class-based-views/mixins-simple/
canonical: https://djangodocs.dev/el/2.0/ref/class-based-views/mixins-simple/
---
# Simple mixins

## `ContextMixin`

#### `class django.views.generic.base.ContextMixin`

**Attributes**

#### `extra_context`

> **New in Django 2.0**

A dictionary to include in the context. This is a convenient way of
specifying some simple context in
[`as_view()`](/el/2.0/ref/class-based-views/base/#django.views.generic.base.View.as_view). Example usage:

```
from django.views.generic import TemplateView
TemplateView.as_view(extra_context={'title': 'Custom Title'})
```

**Methods**

#### `get_context_data(**kwargs)`

Returns a dictionary representing the template context. The keyword
arguments provided will make up the returned context. Example usage:

```
def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['number'] = random.randrange(1, 100)
    return context
```

The template context of all class-based generic views include a
`view` variable that points to the `View` instance.

> **Use alters_data where appropriate**
>
> Note that having the view instance in the template context may
> expose potentially hazardous methods to template authors.  To
> prevent methods like this from being called in the template, set
> `alters_data=True` on those methods.  For more information, read
> the documentation on [rendering a template context](/el/2.0/ref/templates/api/#alters-data-description).

## `TemplateResponseMixin`

#### `class django.views.generic.base.TemplateResponseMixin`

Provides a mechanism to construct a
[`TemplateResponse`](/el/2.0/ref/template-response/#django.template.response.TemplateResponse), given
suitable context. The template to use is configurable and can be
further customized by subclasses.

**Attributes**

#### `template_name`

The full name of a template to use as defined by a string. Not defining
a `template_name` will raise a
[`django.core.exceptions.ImproperlyConfigured`](/el/2.0/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) exception.

#### `template_engine`

The [`NAME`](/el/2.0/ref/settings/#std-setting-TEMPLATES-NAME) of a template engine to use for
loading the template. `template_engine` is passed as the `using`
keyword argument to `response_class`. Default is `None`, which
tells Django to search for the template in all configured engines.

#### `response_class`

The response class to be returned by `render_to_response` method.
Default is [`TemplateResponse`](/el/2.0/ref/template-response/#django.template.response.TemplateResponse). The template and context
of `TemplateResponse` instances can be altered later (e.g. in
[template response middleware](/el/2.0/topics/http/middleware/#template-response-middleware)).

If you need custom template loading or custom context object
instantiation, create a `TemplateResponse` subclass and assign it to
`response_class`.

#### `content_type`

The content type to use for the response. `content_type` is passed
as a keyword argument to `response_class`. Default is `None` –
meaning that Django uses [`DEFAULT_CONTENT_TYPE`](/el/2.0/ref/settings/#std-setting-DEFAULT_CONTENT_TYPE).

**Methods**

#### `render_to_response(context, **response_kwargs)`

Returns a `self.response_class` instance.

If any keyword arguments are provided, they will be passed to the
constructor of the response class.

Calls [`get_template_names()`](#django.views.generic.base.TemplateResponseMixin.get_template_names) to obtain the list of template names
that will be searched looking for an existent template.

#### `get_template_names()`

Returns a list of template names to search for when rendering the
template. The first template that is found will be used.

If [`template_name`](#django.views.generic.base.TemplateResponseMixin.template_name) is specified, the default implementation will
return a list containing [`template_name`](#django.views.generic.base.TemplateResponseMixin.template_name) (if it is specified).
