FBV

FBV是基于函数的视图

CBV

CBV是基于类的视图

CBV基本写法

​ 朝login提交get请求会自动执行MyLogin里面的get方法

​ 而提交post请求也会自动执行MyLogin里面的post方法

​ 为什么MyLogin针对不同的请求方法能够自动执行对应的方法????

同样写在views.py中

from django.views import View
class MyLogin(View):
def get(self,request):
return render(request,'login.html') //写功能
def post(self,request):
return HttpResponse('我是类里面的post方法') /写功能

urls.py中:

# CBV路由配置
url(r'^login/',views.MyLogin.as_view()),

CBV源码分析

1.研究源码的突破口

url(r'^login/',views.MyLogin.as_view())

猜想:

as_view要么是类里面定义的普通函数 @staticmethod
要么是类里面定义的绑定给类的方法 @classmethod

2.进入源码发现是等价@classmethod类绑定方法,并且返回了view函数名称

3.等价

函数名加括号,执行优先级最高

4.view函数返回self.dispatch(request, *args, **kwargs),进去瞅瞅

当看到self.属性或者方法的时候,一定要遵循对象属性和方法的查找顺序。

对象本身--->产生对象的类--->类的父类

5.获取请求方式,并转成小写。进self.http_method_names瞅瞅。判断当前请求方式是否符合默认8个请求方式

6.http_method_names里面是一堆请求方式的列表。8个

7.退到第5步,if判断肯定通过,继续往下走

8.根据返回值get,post自动执行相应的函数

settings源码分析

1.问题抛出。

django settings源码
django暴露给用户一个可以自定义的配置
但是内部也有默认的配置 用户配置了就用用户的 用户没有配就用默认的

Django给用户暴露了一个settings.py的文件。用户在里面配置了就用用户的,如果没有配置就用Django自己的。原理是如何实现的????

DjangoCBV源码分析的更多相关文章

  1. drf复习(一)--原生djangoCBV请求生命周期源码分析、drf自定义配置文件、drf请求生命周期dispatch源码分析

    admin后台注册model  一.原生djangoCBV请求生命周期源码分析 原生view的源码路径(django/views/generic/base.py) 1.从urls.py中as_view ...

  2. ABP源码分析一:整体项目结构及目录

    ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...

  3. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

  4. nginx源码分析之网络初始化

    nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...

  5. zookeeper源码分析之五服务端(集群leader)处理请求流程

    leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...

  6. zookeeper源码分析之四服务端(单机)处理请求流程

    上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...

  7. zookeeper源码分析之三客户端发送请求流程

    znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...

  8. java使用websocket,并且获取HttpSession,源码分析

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/6238826.html 一:本文使用范围 此文不仅仅局限于spring boot,普通的sprin ...

  9. ABP源码分析二:ABP中配置的注册和初始化

    一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数的执行必然是完成 ...

随机推荐

  1. JQuery---高级选择器

    一.派生选择器 例如:$('#bavBar  a') 二.孩子选择器 例如:$('body > p') 三.相邻兄弟选择器 例如:$('h2 + div') 四.属性选择器 1.$('img[a ...

  2. Project Euler Problem 15-Lattice paths

    组合数,2n中选n个.向右走有n步,向下走有n步.共2n步.有n步是向右走的,计算向右走的这n步的所有情况,即C(2n,n). 或者,每一步,只能从右边或者上边走过来,只有这两种情况,即step[i] ...

  3. ubuntu14.04 dnsmasq搭建本地名字服务器

    1 修改dnsmasq配置文件/etc/dnsmasq.conf 在/etc/dnsmasq.conf文件底部增加 #++++++++++++++++++++++++++++++++++++++++ ...

  4. H3C 高级ACL部署位置示例

  5. Python--day41--线程锁

    1,死锁 死锁代码示例: import time from threading import Lock, Thread noodle_lock = Lock() fork_lock = Lock() ...

  6. H3C IGP与EGP

  7. P1063 高兴的津津

    题目描述 津津上高中了.她在自己的妈妈的魔鬼训练下,成为了一个神犇,每次参加一次OI比赛必拿Au虐全场.每次她拿到一个Au后就很高兴.假设津津不会因为其它事高兴,并且她的高兴会持续T天(包包含获奖当天 ...

  8. P1059 硬币翻转

    题目描述 从前有很多个硬币摆在一行,有正面朝上的,也有背面朝上的.正面朝上的用1表示,背面朝上的用0表示.现在要求从这行的第一个硬币开始,将前若干个硬币一起翻面,问如果要将所有硬币翻到正面朝上,最少要 ...

  9. vue 项目使用局域网多端访问并实时自动更新(利用 browser-sync)

    在写vue的项目中时,虽然vue会自动更新页面,但是切换页面切来切去也很麻烦,有时候我们还要在公司另一台电脑或者手机上调试,这时候利用browser-sync插件,无需改动vue的代码即可实现: 1. ...

  10. vue脚手架搭项目 git push超时github网站打不开

    vue: 1.npm install vue-cli -g 全局安装脚手架 2.vue init webpack  name 新建项目 name为项目名称 react: 1..npm install  ...