Django基于类的视图
2016-04-11 00:00
330 查看
摘要: django 1.8 官方文档翻译: 3-4-1 基于类的视图 https://segmentfault.com/a/1190000003506222
django 1.8 官方文档翻译: 3-4-1 基于类的视图
https://segmentfault.com/a/1190000003506222
面向对象的技术,例如Mixin(多继承)可以将代码分解成可重用的组件。
因为Django的URL解析器将请求和关联的参数发送给一个可刁颖的函数儿不是一个雷,所以基于类的视图有一个as_view()类方法类作为类的可调用入口。改as_view()入口点创建类的一个实例并调用dispatch()方法。diapatch查看请求是GET还是POST等等,并将请求转发给相应的方法,如果发方法没有定义则引发HttpResponseNotAllowed。
设置了类的属性:
Python标准的方式,子类化并在子类中覆盖属性和方法。
在URLconf中用as_view()调用的关键字参数配置类的属性。
对于每个请求都会实例化类的一个实例,但是as_view()入口点设置的类属性值在URl第一次导入时配置。
只能继承一个通用视图——也就是说,只能有一个弗雷继承View,其他的弗雷必须是Mixin。继承多个继承自View类将不能像预期的那样动作。
django 1.8 官方文档翻译: 3-4-1 基于类的视图
https://segmentfault.com/a/1190000003506222
基于类的视图
视图是一个可调用对象,它接受一个请求然后返回一个响应。基于类的视图优点
HTTP方法(GET、POST等)可有有个字的方法,而不是通过条件分支来解决。面向对象的技术,例如Mixin(多继承)可以将代码分解成可重用的组件。
使用基于类的视图
使用基于类的视图的核心是允许你使用不同实例方法来形影不同的HTTP请求方法,而不是在一个视图函数中使用条件分支代码来实现。因为Django的URL解析器将请求和关联的参数发送给一个可刁颖的函数儿不是一个雷,所以基于类的视图有一个as_view()类方法类作为类的可调用入口。改as_view()入口点创建类的一个实例并调用dispatch()方法。diapatch查看请求是GET还是POST等等,并将请求转发给相应的方法,如果发方法没有定义则引发HttpResponseNotAllowed。
设置了类的属性:
Python标准的方式,子类化并在子类中覆盖属性和方法。
在URLconf中用as_view()调用的关键字参数配置类的属性。
urlpatterns = [ url(r'^about/', GreetingView.as_view(greeting="G'day")), ]
对于每个请求都会实例化类的一个实例,但是as_view()入口点设置的类属性值在URl第一次导入时配置。
使用Mixin
Mixin 是重用多个类的代码的一种极好的方法,但是它们需要一些代价。代码在Mixin 中越分散,子类将越难阅读并知道它的行为;如果你的继承很深,将难以知道应该覆盖哪一个Mixin 的方法。只能继承一个通用视图——也就是说,只能有一个弗雷继承View,其他的弗雷必须是Mixin。继承多个继承自View类将不能像预期的那样动作。
封装as_view()的Mixin
将共同的行为运用于多个类的一种方法是编写一个封装as_view()的方法Mixin。相关文章推荐
- Gootkit 恶意软件新攻击目标遍布全球
- 2016 Google hosts 持续更新【更新于:2016-04-10】
- 选择算法-GoLang实现
- RoboCup2D team_logo
- 【hdu3966】Aragorn's Story
- poj 1042 Gone Fishing(贪心)
- [Algorithm] 机器学习算法常用指标总结
- TangowithDjango--Start
- I wanna go home(最短路)
- 关于Go语言,自己定义结构体标签的一个妙用.
- 使用Google浏览器必备的插件
- 【GoogleCodeJam2016B】【贪心】Revenge of the Pancakes -+改变并翻转 最小操作次数使得字符串变为全+
- 【GoogleCodeJam2016A】【暴力】Counting Sheep x的倍数从小向大增加直到出现0~9所有数的最小倍增终点
- algorithm-dp
- POJ 3767 I Wanna Go Home【最短路floyd】
- Codeforces--658C--Bear and Forgotten Tree 3(模拟&&技巧)(好题)
- hdu3635 Dragon Balls--并查集
- POJ-3107 Godfather
- go语言赋值
- go语言注释