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

相關文章
相關標籤/搜索