zoukankan      html  css  js  c++  java
  • CBV源码解析

    执行流程:

      路由配置:url(r'^test/', views.Test.as_view()),

      请求通过中间件后进入路由--->根据路由匹配,一旦成功,会执行后面函数(request)--->

      本质就是执行了as_view内部的view函数---->内部又调用了self.dispatch---->

      根据请求方式,执行不同的方法(必然get请求,就会执行咱么写的视图类的get方法)

    分析:

    先创建一个视图函数

    配置路由

    然后按住ctrl键点进去看as_view的源码

    然后再来分析

    这里的self是view这个类的对象,我们在类视图继承了view这个类,就是我们Test这个类的对象,这里返回了一个dispatch方法,但是我们并没有定义这个方法,所以就去Test的父类View里面去找

    然后找到dispatch

    如果在这里面通过反射getattr去这self这个对象里也就是Test这个类的对象通过传过来的名字比如get去取东西,所以类里面的get必须带request

    因为内部返回了*args,**kwargs,为了规范在类视图函数里也要加上

  • 相关阅读:
    oo第三单元学习总结
    oo第二单元学习总结
    OO第四单元UML作业总结兼OO课程总结
    OO第三单元JML作业总结
    OO第二单元电梯作业总结
    OO第一单元总结
    OOUnit4Summary
    OOUnit3Summary
    OOUnit2Summary
    OOUnit1Summary
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11121005.html
Copyright © 2011-2022 走看看