DjangoCBV源码分析

[TOC]html

FBV

FBV是基于函数的视图django

CBV

CBV是基于类的视图函数

CBV基本写法

​ 朝login提交get请求会自动执行MyLogin里面的get方法 ​ 而提交post请求也会自动执行MyLogin里面的post方法 ​ 为何MyLogin针对不一样的请求方法可以自动执行对应的方法????源码分析

一样写在views.py中post

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中:url

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

CBV源码分析

1.研究源码的突破口spa

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

猜测:3d

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

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

3.等价htm

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

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本身的。原理是如何实现的????

相关文章
相关标签/搜索