Django基于类的视图
Django基于类的视图
人间四月 发表于2年前
Django基于类的视图
  • 发表于 2年前
  • 阅读 56
  • 收藏 0
  • 点赞 1
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

摘要: django 1.8 官方文档翻译: 3-4-1 基于类的视图 https://segmentfault.com/a/1190000003506222
django 1.8 官方文档翻译: 3-4-1 基于类的视图
https://segmentfault.com/a/1190000003506222


基于类的视图

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

基于类的视图优点

  1. HTTP方法(GET、POST等)可有有个字的方法,而不是通过条件分支来解决。
  2. 面向对象的技术,例如Mixin(多继承)可以将代码分解成可重用的组件。

使用基于类的视图

使用基于类的视图的核心是允许你使用不同实例方法来形影不同的HTTP请求方法,而不是在一个视图函数中使用条件分支代码来实现。

因为Django的URL解析器将请求和关联的参数发送给一个可刁颖的函数儿不是一个雷,所以基于类的视图有一个as_view()类方法类作为类的可调用入口。改as_view()入口点创建类的一个实例并调用dispatch()方法。diapatch查看请求是GET还是POST等等,并将请求转发给相应的方法,如果发方法没有定义则引发HttpResponseNotAllowed。

设置了类的属性:

  1. Python标准的方式,子类化并在子类中覆盖属性和方法。
  2. 在URLconf中用as_view()调用的关键字参数配置类的属性。
    urlpatterns = [
        url(r'^about/', GreetingView.as_view(greeting="G'day")),
    ]



       对于每个请求都会实例化类的一个实例,但是as_view()入口点设置的类属性值在URl第一次导入时配置。

使用Mixin

  1. Mixin 是重用多个类的代码的一种极好的方法,但是它们需要一些代价。代码在Mixin 中越分散,子类将越难阅读并知道它的行为;如果你的继承很深,将难以知道应该覆盖哪一个Mixin 的方法。
  2. 只能继承一个通用视图——也就是说,只能有一个弗雷继承View,其他的弗雷必须是Mixin。继承多个继承自View类将不能像预期的那样动作。

封装as_view()的Mixin

将共同的行为运用于多个类的一种方法是编写一个封装as_view()的方法Mixin。



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 70
码字总数 30455
×
人间四月
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: