Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
ContextMixin:直接就是一个 get_context_data,用于返回context数据。
django.views.generic.base.ContextMixin
属性
extra_context
指定一些简单上下文的便捷方式 as_view()。用法示例:
from django.views.generic import TemplateView
TemplateView.as_view(extra_context={'title': 'Article Title'})
方法
get_context_data(** kwargs) 返回表示模板上下文的字典。提供的关键字参数将构成返回的上下文。用法示例:
import random
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['number'] = random.randrange(1, 50)
return context
Mixin 提供数据,View 提供模板和渲染。所以一般get_context_data在Mixin中,get(),post(),head()在View中。
View:会调用所有的get方法,post方法,具体是这些['get', 'post', 'put', 'delete', 'head', 'options', 'trace'],View中是没有返回一个response的,所以光继承View的话,必须要重写get等,以返回一个response。
TemplateResponseMixin:这个Mixin会加入Template的基本信息,也就是template。但是光有Template信息是没有用的,因为没有跟View联系起来,如果想要跟View联系起来的话必须想办法把render_to_response插进方法的解析顺序的调用顺序,而且TemplateResponseMixin是没有context的信息。
Django中Mixin和View把原来的视图函数中的三个东西分开了,模板(TemplateResponseMixin),上下文数据(ContextMixin),负责将这些联系起来的(View)。
TemplateView:TemplateView继承自TemplateResponseMixin,ContextMixin以及View,所以它的调用思路就很明确了,在其中定义一个get方法,然后通过get方法去将上面的三个东西联系在一起。TemplateView的源代码: