前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django源码学习-12-ContextMixin 上下文

Django源码学习-12-ContextMixin 上下文

作者头像
小团子
发布2019-08-09 15:16:16
6040
发布2019-08-09 15:16:16
举报
文章被收录于专栏:数据云团

Django源码学习-11-base.py

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

ContextMixin:直接就是一个 get_context_data,用于返回context数据。

代码语言:javascript
复制
django.views.generic.base.ContextMixin

属性

extra_context

指定一些简单上下文的便捷方式 as_view()。用法示例:

代码语言:javascript
复制
from django.views.generic import TemplateView

TemplateView.as_view(extra_context={'title': 'Article Title'})

方法

get_context_data(** kwargs) 返回表示模板上下文的字典。提供的关键字参数将构成返回的上下文。用法示例:

代码语言:javascript
复制
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的源代码:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档