Django——基于类的视图源码分析 一
基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。
借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象与复用能力。 新的通用视图将更加优雅。
Django的文档较为丰富,但在实际开发中往往仍显得不够,很多时候还是需要深入到源代码当中一探究竟。为此,仔细整理了一下基于类的视图的实现方式。期望对以后的开发能够提供更加清晰、直接的参考。
说明:
Django大量应用了多重继承特性。将一些通用的功能性代码拆分混入类(Mixin),需要这些混入类的代码时,只需要将混入类加入到类的继承列表中即
可——请注意顺序,左侧的类具有较高权限,将覆盖右侧继承类中的同名函数。为了说明方便,将这些混入类(Mixin)成为"工具类”。
源码组织
所有的视图相关代码,均存放与django/views/generic目录中:
base.py 保存视图的抽象类,TemplateView和RedirectView,及工具类TemplateResponseMixin的代码
create_update.py 基于函数的通用视图。已标记为deprecated
date_based.py 基于函数的日期相关通用视图。已标记为deprecated
dates.py 新的基于类的日期相关通用视图。用于取代date_based.py
detail.py 基于类的单个对象显示相关的视图和工具类
edit.py 基于类的对象编辑相关的视图和工具类
list.py 基于类的对象列表显示相关视图和工具类
list_detail.py 基于函数的列表、显示函数。已标记为deprecated
simply.py 基于函数的工具常用工具试图。已标记为deprecated
从逻辑上来看,源代码被组织为抽象基类,工具类(Mixin),常规(具体)实现和基于模型的实现。
最新文章
- 求两点之间最短路径-Dijkstra算法
- Java中类的数据成员的初始化顺序
- .Net“/”应用程序中的服务器错误 超过了最大请求长度 错误解决办法
- sp.net2.0中的新增控件BulletedList的一些高级用法
- 1 ubuntu下装setuptools
- vJine.Core 0.3.0.49 正式发布
- siverlight 后台动态设置图片路径的总结
- 动易CMS - 设为首页代码和加入收藏代码(兼容各种浏览器)
- shell:bash环境
- 【常用指令】git+服务器+数据库
- 转载aaa
- Yarn &;&; npm设置镜像源
- ubuntu下没有ping命令
- 《Go语言实战》摘录:7.2 并发模式 - pool
- Atlas系列一:Atlas功能特点FAQ
- 【2005-2006 ACM-ICPC, NEERC, Moscow Subregional Contest】Problem J. Jack-pot
- [转] 遇见 TiDB - 分布式关系数据库
- oracle job定时执行存储过程
- django 'set' object does not support indexing
- isX字符串方法
热门文章
- 一个杀不死的小强,kill进程无效的原因 记录故障排查过程中kill进程无效的分析过程
- php+mysql折线图
- 18、Django实战第18天:课程机构收藏功能
- HDUOJ题目HTML的爬取
- [BZOJ 2752] 高速公路
- 【分块】bzoj2724 [Violet 6]蒲公英
- python3 Django框架报错(备忘录)
- [CSAcademy]Connected Tree Subgraphs
- 5.2类集(java学习笔记)Map,Set接口
- Problem C: 零起点学算法18——3个数比较大小