1. 程式人生 > >CBV-2-CBV流程-view源碼解析-面向對象-繼承

CBV-2-CBV流程-view源碼解析-面向對象-繼承

不同的 rest 基類 怎麽辦 結果 pos bsp delete img

CBV-2-CBV流程-view源碼解析-面向對象-繼承

CBV,基於反射實現根據請求方式不同,執行不同的方法。

請求流程:view源碼解析

1.urls.py :請求一定來執行視圖下的as_view方法。

技術分享圖片

2.views.py 視圖內沒有as_view方法,則找父級的as_view方法。

技術分享圖片

3.源碼:as_view返回自己下面的view方法

技術分享圖片

4.as_view執行了自己view方法,放回值是dispatch方法.

技術分享圖片

5.dispatch方法判斷請求方式。

技術分享圖片

技術分享圖片

6.所以請求已經來,第一步先執行的都是dispatch方法。

接下來我們自己也可以下dispatch方法,dispatch工作原理:

技術分享圖片

運行結果:

技術分享圖片

7.dispatch方法,父類都給我們寫好了。

技術分享圖片

2. django rest framework框架

內容詳細:
0. FBV、CBV
  CBV,基於反射實現根據請求方式不同,執行不同的方法。
原理:
  url -> view方法 -> dispatch方法(反射執行其他:GET/POST/DELETE/PUT)

技術分享圖片

技術分享圖片

繼承(多個類共用的功能,為了避免重復編寫):

1.假設在每一個視圖中的get方法,執行前後後都要加上一段代碼,你會怎麽辦?

技術分享圖片

2.兩個類都有同一個方法,讓它們都繼承一個基類。

技術分享圖片

CBV-2-CBV流程-view源碼解析-面向對象-繼承