Django——基于类的视图源码分析 二
源码分析
抽象类和常用视图(base.py)
这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图(RedirectView)。

View及View的执行顺序
View是所有基于类的视图的基类。仅实现了一些基本的方法和必要的检查工作。其中最重要的是dispatch方法。再次方法中,根据HTTP请求 中的method参数,调用相应的同名处理函数。这里留下了一个口子,后续的类需要根据自己的情况来填补这个口子最终完成一个视图的处理。
属性
http_method_names 定义所有的Http metho['get','post','put','delete','head','options','trace']。
方法
init 初始化方法
由URLConf调用。包含将关键字参数存入实例属性等功能。
如果一个视图包含一个实例属性,且在urlpattern中设置了相应的值。将配置的值赋给视图对象的方法就是由URLConf调用init函数时作为参数传入。View.init负责具体的赋值工作。
as_view 类方法(classonlymethod)。返回Function-based视图函数对象。返回的视图函数对象(“在被调用时”)负责实例化视图,调用视图的dispatch方法。
dispatch 调度函数。根据Http method调用视图的同名函数
http_method_not_allowed 返回不被允许的http method处理函数
TemplateResponseMixin
提供使用模版渲染的工具类。template_name参数用于指定模版。希望具备模版功能的视图可以直接继承此工具累计可。不过我们很少直接在自己的视图中继承此工具类,因为Django已经提供了一组有用的视图来减少我们的工作。
TemplateView
基于模版的视图 。需要提供附加数据,可以在继承此视图的子类中,重写get_context_data方法。常用于诸如"about”,“copyrights” ,“terms"等基于文本的静态内容。只需设置template_name即可。甚至直接可以在URLConf中直接指定此参数。
如:
|
1
|
url(r'^about/$',TemplateView.as_view(template_name='about.html')) |
RedirectView
重定向视图。可以说这个视图提供了完全的重定向功能。无论是http get、post、delete还是head、options都将重定向到url参数指定的地址。
permanent 属性指定是否返回永久(HTTP 301)重定向信息,否则返回临时重定向(HTTP 302),默认是true.
Django——基于类的视图源码分析 二的更多相关文章
- Django——基于类的视图源码分析 一
基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式. 借助于OO和Python中方便的多重继承特性, ...
- Django——基于类的视图源码分析 三
列表类通用视图(list.py) 此文件包含用于显示数据列表常用的类和工具类.不仅可以方便的用于显示基于模型(Model)的数据列表,也可以用于显示自定义数据列表. 此图中绿色部分属于base.py, ...
- DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render
DRF框架 全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...
- Django的settings文件部分源码分析
Django的settings文件部分源码分析 在编写Django项目的过程中, 其中一个非常强大的功能就是我们可以在settings文件配置许多选项来完成我们预期的功能, 并且这些配置还必须大写, ...
- Fresco 源码分析(二) Fresco客户端与服务端交互(1) 解决遗留的Q1问题
4.2 Fresco客户端与服务端的交互(一) 解决Q1问题 从这篇博客开始,我们开始讨论客户端与服务端是如何交互的,这个交互的入口,我们从Q1问题入手(博客按照这样的问题入手,是因为当时我也是从这里 ...
- 框架-springmvc源码分析(二)
框架-springmvc源码分析(二) 参考: http://www.cnblogs.com/leftthen/p/5207787.html http://www.cnblogs.com/leftth ...
- Tomcat源码分析二:先看看Tomcat的整体架构
Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server.Service.Conn ...
- 十、Spring之BeanFactory源码分析(二)
Spring之BeanFactory源码分析(二) 前言 在前面我们简单的分析了BeanFactory的结构,ListableBeanFactory,HierarchicalBeanFactory,A ...
- Vue源码分析(二) : Vue实例挂载
Vue源码分析(二) : Vue实例挂载 author: @TiffanysBear 实例挂载主要是 $mount 方法的实现,在 src/platforms/web/entry-runtime-wi ...
随机推荐
- 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
来自:http://blog.csdn.net/lvxiangan/article/details/8151670 ------------------------------------------ ...
- 《Java编程思想》笔记 第十五章 泛型
1 泛型 “泛型”意思就是适用于许多类型. 使用泛型的目的之一: 指定容器持有什么类型,让编译器确保正确性,而不是在运行期发现错误. 这个容器可以看成是有其他类型对象作为成员的类,而不单单只是JDK中 ...
- getResourceAsStream用法详解
//使用绝对路径,否则无法读取config.properties //InputStream inStream=new FileInputStream("F:\\android\\test\ ...
- java 单元测试框架
@Test:测试方法(A) (expected=XXEception.class)(B) (timeout=xxx)@Ignore: 被忽略的测试方法. //该方法 不会执行@Before: 每一个测 ...
- hdu 2196(方法1:经典树形DP+方法2:树的直径)
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- MATLAB作图方法与技巧(一)
下面从折线图.曲面图和图形说明与定制三个方面说明MATLAB作图的一些方法与技巧,注意,文中出现的单引号在MATLAB中实际运行的时候,需要改为MATLAB认可的单引号. 一. 作折线图 1.plot ...
- Laravel开启跨域的方法
1.建立中间件Cors.php 命令:php artisan make:middleware Cors 在/app/Http/Middleware/ 目录下会出现一个Cors.php 文件. 内容如下 ...
- 浅谈replace()
replace()简单介绍 replace()基本语法是String.replace(searchValue,replaceValue),其中searchValue为字符串或者正则,replaceVa ...
- (7)python 函数和lambda表达式
一.函数定义和调用 1.定义函数用def 2.函数注释 在函数体里的开头写上字符串,可以起到说明的作用 可以用函数名.__doc__的方式读取在函数开头加的字符串(双下划线) 内建的help()函数也 ...
- SPFA解决单源最短路径
SPFA(Shortest Path Faster Algorithm): 一:基本算法 在求解单源最短路径的时候,最经典的是 Dijkstra 算法,但是这个算法对于含有负权的图就无能为力了,而 B ...