Django 簡單的mixins(ContextMixin、TemplateResponseMixin)
一、ContextMixin
django.views.generic.base.ContextMixin
屬性
extra_context Django 2.0中的新功能: 要包含在上下文中的字典。這是指定一些簡單上下文的便捷方式 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
二、TemplateResponseMixin
django.views.generic.base.TemplateResponseMixin TemplateResponse給定適當的上下文,提供構造a的機制 。要使用的模板是可配置的,可以通過子類進一步自定義。
屬性
template_name 要由字串定義使用的模板的全名。不定義template_name會引發 django.core.exceptions.ImproperlyConfigured異常。
template_engine 該NAME模板引擎的使用載入的模板。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使用DEFAULT_CONTENT_TYPE。
方法
render_to_response(上下文,** response_kwargs) 返回一個self.response_class例項。
如果提供了任何關鍵字引數,它們將被傳遞給響應類的建構函式。
呼叫get_template_names()以獲取將搜尋的模板名稱列表,以查詢現有模板。
get_template_names() 返回呈現模板時要搜尋的模板名稱列表。將使用找到的第一個模板。
如果template_name指定,則預設實現將返回包含template_name(如果已指定)的列表。