1. 程式人生 > >Django 簡單的mixins(ContextMixin、TemplateResponseMixin)

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(如果已指定)的列表。