{"title":"简单混入","version":"3.2","locale":"zh-hans","docname":"ref/class-based-views/mixins-simple","url":"/zh-hans/3.2/ref/class-based-views/mixins-simple/","canonical":"https://djangodocs.dev/zh-hans/3.2/ref/class-based-views/mixins-simple/","summary":"ContextMixin Link to this heading # class django.views.generic.base. ContextMixin Link to this definition # 属性 extra_context Link to this definition #…","html":"<h1>简单混入<a class=\"heading-anchor\" href=\"#simple-mixins\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"contextmixin\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">ContextMixin</span></code><a class=\"heading-anchor\" href=\"#contextmixin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.ContextMixin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ContextMixin</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.ContextMixin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><strong>属性</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.ContextMixin.extra_context\">\n<span class=\"sig-name descname\"><span class=\"pre\">extra_context</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.ContextMixin.extra_context\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>一个包含在上下文中的字典。这是在 <code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">as_view()</span></code> 中指定一些上下文的方便方法。使用示例：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.views.generic</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateView</span>\n<span class=\"n\">TemplateView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span><span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;title&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Custom Title&#39;</span><span class=\"p\">})</span>\n</code></pre></div>\n</dd></dl>\n\n<p><strong>方法</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.ContextMixin.get_context_data\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_context_data</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.ContextMixin.get_context_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回一个代表模板上下文的字典。提供的关键字参数将构成返回的上下文。示例用法：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_context_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n    <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_context_data</span><span class=\"p\">(</span><span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n    <span class=\"n\">context</span><span class=\"p\">[</span><span class=\"s1\">&#39;number&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">random</span><span class=\"o\">.</span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">context</span>\n</code></pre></div>\n<p>所有基于类的通用视图的模板上下文包括一个指向 <code class=\"docutils literal notranslate\"><span class=\"pre\">View</span></code> 实例的 <code class=\"docutils literal notranslate\"><span class=\"pre\">view</span></code> 变量。</p>\n<aside class=\"admonition-use-alters-data-where-appropriate admonition\">\n<p class=\"admonition-title\">酌情使用 <code class=\"docutils literal notranslate\"><span class=\"pre\">alters_data</span></code>。</p>\n<p>请注意，在模板上下文中使用视图实例可能会将潜在的危险方法暴露给模板作者。 为了防止这样的方法在模板中被调用，请在这些方法上设置 <code class=\"docutils literal notranslate\"><span class=\"pre\">alters_data=True</span></code>。 更多信息，请阅读 <a class=\"reference internal\" href=\"/zh-hans/3.2/ref/templates/api/#alters-data-description\"><span class=\"std std-ref\">渲染一个模板的上下文</span></a> 的文档。</p>\n</aside>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"templateresponsemixin\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponseMixin</span></code><a class=\"heading-anchor\" href=\"#templateresponsemixin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.base.</span></span><span class=\"sig-name descname\"><span class=\"pre\">TemplateResponseMixin</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>提供一个机制来构造一个 <a class=\"reference internal\" href=\"/zh-hans/3.2/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a>，给定合适的上下文。使用的模板是可配置的，可以通过子类进一步定制。</p>\n<p><strong>属性</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin.template_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">template_name</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin.template_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>要使用的模板的全称，由一个字符串定义。如果没有定义 <code class=\"docutils literal notranslate\"><span class=\"pre\">template_name</span></code> 将引发一个 <a class=\"reference internal\" href=\"/zh-hans/3.2/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.exceptions.ImproperlyConfigured</span></code></a> 异常。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin.template_engine\">\n<span class=\"sig-name descname\"><span class=\"pre\">template_engine</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin.template_engine\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>用于加载模板的模板引擎的 <a class=\"reference internal\" href=\"/zh-hans/3.2/ref/settings/#std-setting-TEMPLATES-NAME\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">NAME</span></code></a>。<code class=\"docutils literal notranslate\"><span class=\"pre\">template_engine</span></code> 作为 <code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code> 关键字参数传递给 <code class=\"docutils literal notranslate\"><span class=\"pre\">response_class</span></code>。默认值是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>，它告诉 Django 在所有配置的引擎中搜索模板。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin.response_class\">\n<span class=\"sig-name descname\"><span class=\"pre\">response_class</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin.response_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">render_to_response</span></code> 方法要返回的响应类，默认为 <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code>。默认为 <a class=\"reference internal\" href=\"/zh-hans/3.2/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a>。<code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> 实例的模板和上下文可以在以后进行修改（例如在 :ref:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>template response middleware <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>）。</p>\n<p>如果你需要自定义模板加载或自定义上下文对象实例化，请创建一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code> 子类，并将其分配给 <code class=\"docutils literal notranslate\"><span class=\"pre\">response_class</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin.content_type\">\n<span class=\"sig-name descname\"><span class=\"pre\">content_type</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin.content_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>响应要使用的内容类型。<code class=\"docutils literal notranslate\"><span class=\"pre\">content_type</span></code> 作为 <code class=\"docutils literal notranslate\"><span class=\"pre\">response_class</span></code> 的关键字参数传递。默认值是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>——意味着 Django 使用 <code class=\"docutils literal notranslate\"><span class=\"pre\">'text/html'</span></code>。</p>\n</dd></dl>\n\n<p><strong>方法</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin.render_to_response\">\n<span class=\"sig-name descname\"><span class=\"pre\">render_to_response</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">context</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">response_kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin.render_to_response\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">self.response_class</span></code> 实例。</p>\n<p>如果提供任何关键字参数，它们将被传递给响应类的构造函数。</p>\n<p>调用 <a class=\"reference internal\" href=\"#django.views.generic.base.TemplateResponseMixin.get_template_names\" title=\"django.views.generic.base.TemplateResponseMixin.get_template_names\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_template_names()</span></code></a> 来获取将被搜索的模板名称列表，以寻找存在的模板。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.base.TemplateResponseMixin.get_template_names\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_template_names</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.base.TemplateResponseMixin.get_template_names\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回渲染模板时要搜索的模板名称列表。找到的第一个模板将被使用。</p>\n<p>默认的实现将返回一个包含 <a class=\"reference internal\" href=\"#django.views.generic.base.TemplateResponseMixin.template_name\" title=\"django.views.generic.base.TemplateResponseMixin.template_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">template_name</span></code></a> 的列表（如果指定了）。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>","rootId":"simple-mixins","toc":[{"title":"ContextMixin","anchor":"contextmixin","children":[]},{"title":"TemplateResponseMixin","anchor":"templateresponsemixin","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API 参考","url":"/zh-hans/3.2/ref/"},{"docname":"ref/class-based-views/index","title":"内置基于类的视图 API","url":"/zh-hans/3.2/ref/class-based-views/"},{"docname":"ref/class-based-views/mixins","title":"基于类的视图混入","url":"/zh-hans/3.2/ref/class-based-views/mixins/"}],"prev":{"docname":"ref/class-based-views/mixins","title":"基于类的视图混入","url":"/zh-hans/3.2/ref/class-based-views/mixins/"},"next":{"docname":"ref/class-based-views/mixins-single-object","title":"单对象混入","url":"/zh-hans/3.2/ref/class-based-views/mixins-single-object/"},"formats":{"html":"/zh-hans/3.2/ref/class-based-views/mixins-simple/","markdown":"/zh-hans/3.2/ref/class-based-views/mixins-simple.md","json":"/zh-hans/3.2/ref/class-based-views/mixins-simple.json"},"source":"https://github.com/django/django/blob/stable/3.2.x/docs/ref/class-based-views/mixins-simple.txt","official":"https://docs.djangoproject.com/zh-hans/3.2/ref/class-based-views/mixins-simple/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}