CBV-2-CBV流程-view源碼解析-面向對象-繼承
阿新 • • 發佈:2018-07-08
不同的 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源碼解析-面向對象-繼承