“Django/docs/2.2.x/ref/class-based-views/mixins-simple”的版本间差异
(autoload) |
小 (Page commit) |
||
第1行: | 第1行: | ||
+ | {{DISPLAYTITLE:简单的 mixins — Django 文档}} | ||
<div id="simple-mixins" class="section"> | <div id="simple-mixins" class="section"> | ||
− | = | + | = 简单混入 = |
<div id="contextmixin" class="section"> | <div id="contextmixin" class="section"> | ||
− | == | + | == ContextMixin == |
<dl> | <dl> | ||
− | <dt>''class'' < | + | <dt>''<span class="pre">class</span>'' <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></dt> |
<dd><p>'''属性'''</p> | <dd><p>'''属性'''</p> | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">extra_context</span></span></dt> |
− | <dd><p> | + | <dd><p>要包含在上下文中的字典。 这是在 [[../base#django.views.generic.base.View|as_view()]] 中指定一些简单上下文的便捷方式。 用法示例:</p> |
− | |||
− | [[../base#django.views.generic.base.View| | ||
<div class="highlight-default notranslate"> | <div class="highlight-default notranslate"> | ||
<div class="highlight"> | <div class="highlight"> | ||
− | < | + | <syntaxhighlight lang="python">from django.views.generic import TemplateView |
− | TemplateView.as_view(extra_context={'title': 'Custom Title'})</ | + | TemplateView.as_view(extra_context={'title': 'Custom Title'})</syntaxhighlight> |
</div> | </div> | ||
第28行: | 第27行: | ||
<p>'''方法'''</p> | <p>'''方法'''</p> | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">get_context_data</span></span><span class="sig-paren">(</span>''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span>''<span class="sig-paren">)</span></dt> |
− | <dd><p> | + | <dd><p>返回表示模板上下文的字典。 提供的关键字参数将构成返回的上下文。 用法示例:</p> |
− | |||
<div class="highlight-default notranslate"> | <div class="highlight-default notranslate"> | ||
<div class="highlight"> | <div class="highlight"> | ||
− | < | + | <syntaxhighlight lang="python">def get_context_data(self, **kwargs): |
context = super().get_context_data(**kwargs) | context = super().get_context_data(**kwargs) | ||
context['number'] = random.randrange(1, 100) | context['number'] = random.randrange(1, 100) | ||
− | return context</ | + | return context</syntaxhighlight> |
</div> | </div> | ||
</div> | </div> | ||
− | <p> | + | <p>所有基于类的通用视图的模板上下文都包含一个 <code>view</code> 变量,该变量指向 <code>View</code> 实例。</p> |
− | <code>view</code> | ||
<div class="admonition-use-alters-data-where-appropriate admonition"> | <div class="admonition-use-alters-data-where-appropriate admonition"> | ||
− | <p> | + | <p>在适当的地方使用 <code>alters_data</code></p> |
− | <p> | + | <p>请注意,在模板上下文中拥有视图实例可能会将潜在的危险方法暴露给模板作者。 要防止在模板中调用此类方法,请在这些方法上设置 <code>alters_data=True</code>。 有关更多信息,请阅读有关 [[../../templates/api#alters-data-description|渲染模板上下文]] 的文档。</p> |
− | |||
− | |||
− | <code>alters_data=True</code> | ||
− | |||
</div></dd></dl> | </div></dd></dl> | ||
第61行: | 第54行: | ||
<div id="templateresponsemixin" class="section"> | <div id="templateresponsemixin" class="section"> | ||
− | == | + | == TemplateResponseMixin == |
<dl> | <dl> | ||
− | <dt>''class'' < | + | <dt>''<span class="pre">class</span>'' <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></dt> |
− | <dd><p> | + | <dd><p>在给定合适的上下文的情况下,提供一种构造 [[../../template-response#django.template.response|TemplateResponse]] 的机制。 要使用的模板是可配置的,并且可以由子类进一步自定义。</p> |
− | [[../../template-response#django.template.response| | ||
− | |||
− | |||
<p>'''属性'''</p> | <p>'''属性'''</p> | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">template_name</span></span></dt> |
− | <dd><p> | + | <dd><p>要使用的模板的全名,由字符串定义。 不定义 <code>template_name</code> 将引发 [[../../exceptions#django.core.exceptions|django.core.exceptions.ImproperlyConfigured]] 异常。</p></dd></dl> |
− | |||
− | [[../../exceptions#django.core.exceptions| | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">template_engine</span></span></dt> |
− | <dd><p> | + | <dd><p>这 [[#id1|:setting:`名称 `]] 用于加载模板的模板引擎。 <code>template_engine</code> 作为 <code>using</code> 关键字参数传递给 <code>response_class</code>。 默认为 <code>None</code>,它告诉 Django 在所有配置的引擎中搜索模板。</p></dd></dl> |
− | |||
− | |||
− | |||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">response_class</span></span></dt> |
− | <dd><p> | + | <dd><p><code>render_to_response</code> 方法返回的响应类。 默认值为 [[../../template-response#django.template.response|TemplateResponse]]。 <code>TemplateResponse</code> 实例的模板和上下文可以稍后更改(例如 在 [[../../../topics/http/middleware#template-response-middleware|模板响应中间件]] 中)。</p> |
− | + | <p>如果您需要自定义模板加载或自定义上下文对象实例化,请创建一个 <code>TemplateResponse</code> 子类并将其分配给 <code>response_class</code>。</p></dd></dl> | |
− | |||
− | [[../../../topics/http/middleware#template-response-middleware| | ||
− | <p> | ||
− | |||
− | <code>response_class</code> | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">content_type</span></span></dt> |
− | <dd><p> | + | <dd><p>用于响应的内容类型。 <code>content_type</code> 作为关键字参数传递给 <code>response_class</code>。 默认为 <code>None</code> – 表示 Django 使用 [[#id3|:setting:`DEFAULT_CONTENT_TYPE`]]。</p></dd></dl> |
− | |||
− | |||
<p>'''方法'''</p> | <p>'''方法'''</p> | ||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">render_to_response</span></span><span class="sig-paren">(</span>''<span class="n"><span class="pre">context</span></span>'', ''<span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">response_kwargs</span></span>''<span class="sig-paren">)</span></dt> |
− | <dd><p> | + | <dd><p>返回一个 <code>self.response_class</code> 实例。</p> |
− | <p> | + | <p>如果提供任何关键字参数,它们将被传递给响应类的构造函数。</p> |
− | + | <p>调用 [[#django.views.generic.base.TemplateResponseMixin.get_template_names|get_template_names()]] 以获取模板名称列表,这些模板名称将被搜索以查找现有模板。</p></dd></dl> | |
− | <p> | ||
− | |||
<dl> | <dl> | ||
− | <dt>< | + | <dt><span class="sig-name descname"><span class="pre">get_template_names</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span></dt> |
− | <dd><p> | + | <dd><p>返回要在呈现模板时搜索的模板名称列表。 将使用找到的第一个模板。</p> |
− | + | <p>如果指定了 [[#django.views.generic.base.TemplateResponseMixin.template_name|template_name]],默认实现将返回一个包含 [[#django.views.generic.base.TemplateResponseMixin.template_name|template_name]](如果指定)的列表。</p></dd></dl> | |
− | <p> | ||
− | |||
</dd></dl> | </dd></dl> | ||
第120行: | 第94行: | ||
</div> | </div> | ||
+ | <div class="clearer"> | ||
− | [[Category:Django 2.2.x | + | |
+ | |||
+ | </div> | ||
+ | |||
+ | [[Category:Django 2.2.x 文档]] |
2021年10月31日 (日) 04:05的最新版本
简单混入
ContextMixin
- class django.views.generic.base.ContextMixin
属性
- extra_context
要包含在上下文中的字典。 这是在 as_view() 中指定一些简单上下文的便捷方式。 用法示例:
方法
- get_context_data(**kwargs)
返回表示模板上下文的字典。 提供的关键字参数将构成返回的上下文。 用法示例:
所有基于类的通用视图的模板上下文都包含一个
view
变量,该变量指向View
实例。在适当的地方使用
alters_data
请注意,在模板上下文中拥有视图实例可能会将潜在的危险方法暴露给模板作者。 要防止在模板中调用此类方法,请在这些方法上设置
alters_data=True
。 有关更多信息,请阅读有关 渲染模板上下文 的文档。
TemplateResponseMixin
- class django.views.generic.base.TemplateResponseMixin
在给定合适的上下文的情况下,提供一种构造 TemplateResponse 的机制。 要使用的模板是可配置的,并且可以由子类进一步自定义。
属性
- template_name
要使用的模板的全名,由字符串定义。 不定义
template_name
将引发 django.core.exceptions.ImproperlyConfigured 异常。
- template_engine
这 :setting:`名称 ` 用于加载模板的模板引擎。
template_engine
作为using
关键字参数传递给response_class
。 默认为None
,它告诉 Django 在所有配置的引擎中搜索模板。
- response_class
render_to_response
方法返回的响应类。 默认值为 TemplateResponse。TemplateResponse
实例的模板和上下文可以稍后更改(例如 在 模板响应中间件 中)。如果您需要自定义模板加载或自定义上下文对象实例化,请创建一个
TemplateResponse
子类并将其分配给response_class
。
- content_type
用于响应的内容类型。
content_type
作为关键字参数传递给response_class
。 默认为None
– 表示 Django 使用 :setting:`DEFAULT_CONTENT_TYPE`。
方法
- render_to_response(context, **response_kwargs)
返回一个
self.response_class
实例。如果提供任何关键字参数,它们将被传递给响应类的构造函数。
调用 get_template_names() 以获取模板名称列表,这些模板名称将被搜索以查找现有模板。
- get_template_names()
返回要在呈现模板时搜索的模板名称列表。 将使用找到的第一个模板。
如果指定了 template_name,默认实现将返回一个包含 template_name(如果指定)的列表。