您的位置:首页 > 编程语言 > Go语言

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

基于类的视图

视图是一个可调用对象,它接受一个请求然后返回一个响应。

基于类的视图优点

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: