---
title: "简单混入"
version: 4.2
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/4.2/ref/class-based-views/mixins-simple/
canonical: https://djangodocs.dev/zh-hans/4.2/ref/class-based-views/mixins-simple/
---
# 简单混入

## `ContextMixin`

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

**属性**

#### `extra_context`

一个包含在上下文中的字典。这是在 `as_view()` 中指定一些上下文的方便方法。使用示例：

```
from django.views.generic import TemplateView

TemplateView.as_view(extra_context={"title": "Custom Title"})
```

**方法**

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

返回一个代表模板上下文的字典。提供的关键字参数将构成返回的上下文。示例用法：

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

所有基于类的通用视图的模板上下文包括一个指向 `View` 实例的 `view` 变量。

> **酌情使用 alters_data。**
>
> 请注意，在模板上下文中使用视图实例可能会将潜在的危险方法暴露给模板作者。 为了防止这样的方法在模板中被调用，请在这些方法上设置 `alters_data=True`。 更多信息，请阅读 [渲染一个模板的上下文](/zh-hans/4.2/ref/templates/api/#alters-data-description) 的文档。

## `TemplateResponseMixin`

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

提供一个机制来构造一个 [`TemplateResponse`](/zh-hans/4.2/ref/template-response/#django.template.response.TemplateResponse)，给定合适的上下文。使用的模板是可配置的，可以通过子类进一步定制。

**属性**

#### `template_name`

要使用的模板的全称，由一个字符串定义。如果没有定义 `template_name` 将引发一个 [`django.core.exceptions.ImproperlyConfigured`](/zh-hans/4.2/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) 异常。

#### `template_engine`

用于加载模板的模板引擎的 [`NAME`](/zh-hans/4.2/ref/settings/#std-setting-TEMPLATES-NAME)。`template_engine` 作为 `using` 关键字参数传递给 `response_class`。默认值是 `None`，它告诉 Django 在所有配置的引擎中搜索模板。

#### `response_class`

`render_to_response` 方法要返回的响应类，默认为 `TemplateResponse`。默认为 [`TemplateResponse`](/zh-hans/4.2/ref/template-response/#django.template.response.TemplateResponse)。`TemplateResponse` 实例的模板和上下文可以在以后进行修改（例如在 :ref:template response middleware ）。

如果你需要自定义模板加载或自定义上下文对象实例化，请创建一个 `TemplateResponse` 子类，并将其分配给 `response_class`。

#### `content_type`

响应要使用的内容类型。`content_type` 作为 `response_class` 的关键字参数传递。默认值是 `None`——意味着 Django 使用 `'text/html'`。

**方法**

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

返回一个 `self.response_class` 实例。

如果提供任何关键字参数，它们将被传递给响应类的构造函数。

调用 [`get_template_names()`](#django.views.generic.base.TemplateResponseMixin.get_template_names) 来获取将被搜索的模板名称列表，以寻找存在的模板。

#### `get_template_names()`

返回渲染模板时要搜索的模板名称列表。找到的第一个模板将被使用。

默认的实现将返回一个包含 [`template_name`](#django.views.generic.base.TemplateResponseMixin.template_name) 的列表（如果指定了）。
