Django 1.8.2 文档

简单的Mixin

ContextMixin

class django.views.generic.base.ContextMixin

方法

get_context_data(**kwargs)

返回用来表示模板的Context 的字典。传递的关键字参数将组成返回的Context。示例用法:

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

所有基于类的通用视图的这个模板Context 都包含一个view 变量指向视图实例。

在适当的位置使用alters_data

注意,将视图实例包含在模板Context 中可能将有潜在危险的方法暴露给模板作者。为了避免在模板中被调用类似这样的方法,可以在这些方法上设置alters_data=True更多信息,参见渲染模板Context 的文档。

TemplateResponseMixin

class django.views.generic.base.TemplateResponseMixin

根据合适的Context,提供一种构造TemplateResponse 的机制。使用的模板可以配置,而且在子类中可以进一步自定义。

属性

template_name

字符串形式的模板名称。如果没有定义template_name 将引发一个django.core.exceptions.ImproperlyConfigured 异常。

template_engine
New in Django 1.8.

用于加载模板的模板引擎的名称template_engine 将作为using 关键字参数传递给response_class默认值为None,它告诉Django在所有配置的引擎中搜索模板。

response_class

render_to_response 方法返回的响应类。默认为TemplateResponseTemplateResponse 实例的模板和Context 可以在后面改动(例如,在模板响应中间件中)。

Changed in Django 1.8:

在旧版本的Django 中,TemplateResponse 使用 RequestContext,模板处理器中的值将覆盖视图中定义的模板变量。例如,如果你子类化DetailView 并设置 context_object_nameuserdjango.contrib.auth.context_processors.auth Context 处理器将使用当前的user 覆盖你这个变量。现在,为了与render() 快捷函数保持一致性,类中提供的Context 将覆盖Context 处理器中的值。

如果你需要自定义模板的加载或者自定义Context 对象的实例化,你可以创建一个TemplateResponse 的子类并将它赋值给 response_class

content_type

响应使用的Content-Type。content_type 将作为关键字参数传递给response_class默认为None —— 表示Django 将使用DEFAULT_CONTENT_TYPE

方法

render_to_response(context, **response_kwargs)

返回一个self.response_class 实例。

提供的任何参数都将传递给response_class。

调用get_template_names() 可以获得模板名称的列表,在查找存在的模板时会搜索这个列表。

get_template_names()

返回模板名称的一个列表,在查找存在的模板时会搜索这个列表。

如果指定template_name,默认的实现将返回包含 template_name 的一个列表。