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. 利用伪类选择器与better-scroll的on事件所完成的上拉加载

    之前给大家分享过一篇上拉加载 利用了better-scroll的pullUpDown 和DOM元素的删除添加  感觉那样不太好 今天给大家分享一个不同的上拉加载思想 代码如下 class List { ...

  2. Websocket 单聊功能

    单聊代码 import json from flask import Flask,request,render_template from geventwebsocket.handler import ...

  3. python -- 类中--内置方法

    isinstance 和  issubclass isinstance(obj,b)  检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...

  4. poj 3675 Telescope (圆与多边形面积交)

    3675 -- Telescope 再来一题.这题的代码还是继续完全不看模板重写的. 题意不解释了,反正就是一个单纯的圆与多边形的交面积. 这题的精度有点搞笑.我用比较高的精度来统计面积,居然wa了. ...

  5. oracle多个平等的索引

    当SQL语句的执行路径可以使用分布在多个表上的多个索引时, ORACLE会同时使用多个索引并在运行时对它们的记录进行合并, 检索出仅对全部索引有效的记录. 在ORACLE选择执行路径时,唯一性索引的等 ...

  6. poj 2451 Uyuw's Concert (半平面交)

    2451 -- Uyuw's Concert 继续半平面交,这还是简单的半平面交求面积,不过输入用cin超时了一次. 代码如下: #include <cstdio> #include &l ...

  7. 2018-9-28-WPF-自定义-TextBoxView-的-Margin-大小

    title author date CreateTime categories WPF 自定义 TextBoxView 的 Margin 大小 lindexi 2018-09-28 17:16:17 ...

  8. Mule自带例子之flight-reservation

    1 配置效果图 2 应用的配置文件 <?xml version="1.0" encoding="UTF-8"?> <mule xmlns:sc ...

  9. 关于scipy包的安装

    先安装好scikit-learn和numpy,从网上下载scipy的whl文件,通过pip install+安装包地址的方法安装

  10. H3C 单区域OSPF配置示例一(续)