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,为了规范在类视图函数里也要加上

  • 相关阅读:
    Fiddler filter 过滤隐藏css、js、图片等
    十三、单元测试
    十二、文件操作
    Go_客户信息管理系统
    十一、面向对象编程_下
    十、面向对象编程_上
    九、map
    八、排序和查找
    七、数组和切片
    六、函数、包和错误处理
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11121005.html
Copyright © 2011-2022 走看看