Django CBV模型源碼運(yùn)行流程詳解
在view文件中編寫一個(gè)類,并配置好路由
class Test(View):
def get(self, request, *args, **kwargs):
return HttpResponse('cbv_get')
def post(self, request, *args, **kwargs):
return HttpResponse('cbv_post')
url(r'test/',views.Test.as_view()),
通過(guò)as_view()進(jìn)入查看源碼

實(shí)際上views.Test.as_view()是存的一個(gè)內(nèi)存地址,加括號(hào)被調(diào)用,執(zhí)行了as_view方法里的view方法,具體看下圖:

核心是dispatch方法,在dispatch方法中完成了分發(fā)功能。

若要在Test類中自定義dispatch方法,代碼如下:
class Test(View):
def dispatch(self, request, *args, **kwargs):
# 加代碼
obj = super().dispatch(self, request, *args, **kwargs)
# 加代碼
# 實(shí)現(xiàn)了一個(gè)類似裝飾器的效果,比如post請(qǐng)求,如果是json,手動(dòng)從request里body取出來(lái) 再轉(zhuǎn)一下
# 或者走的時(shí)候加點(diǎn)cookie
return obj
def get(self, request, *args, **kwargs):
return HttpResponse('cbv_get')
def post(self, request, *args, **kwargs):
return HttpResponse('cbv_post')
流程總結(jié):
CBV模型
- 在views中寫一個(gè)類,繼承View,里面寫get方法,post方法
- 在路由中配置: url(r'^test/', views.Test.as_view()),實(shí)際上第二個(gè)參數(shù)位置,放的還是一個(gè)函數(shù)內(nèi)存地址
- 當(dāng)請(qǐng)求來(lái)了,就會(huì)執(zhí)行第二個(gè)參數(shù)(request,參數(shù)),本質(zhì)上執(zhí)行view()
- view內(nèi)部調(diào)用了dispatch()方法
- dispatch分發(fā)方法,根據(jù)請(qǐng)求方式不同,執(zhí)行的方法不同
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
VS2019+python3.7+opencv4.1+tensorflow1.13配置詳解
這篇文章主要介紹了VS2019+python3.7+opencv4.1+tensorflow1.13配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python實(shí)戰(zhàn)快速上手BeautifulSoup庫(kù)爬取專欄標(biāo)題和地址
BeautifulSoup是爬蟲必學(xué)的技能,BeautifulSoup最主要的功能是從網(wǎng)頁(yè)抓取數(shù)據(jù),Beautiful Soup自動(dòng)將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為utf-8編碼2021-10-10
教你如何使用Python實(shí)現(xiàn)二叉樹結(jié)構(gòu)及三種遍歷
什么是二叉樹:每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹的樹結(jié)構(gòu),通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree) 二叉樹由兩個(gè)對(duì)象組成,一個(gè)是節(jié)點(diǎn)對(duì)象,一個(gè)是樹對(duì)象,需要的朋友可以參考下2021-06-06
解決TensorFlow GPU版出現(xiàn)OOM錯(cuò)誤的問(wèn)題
今天小編就為大家分享一篇解決TensorFlow GPU版出現(xiàn)OOM錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
跟老齊學(xué)Python之用while來(lái)循環(huán)
while,翻譯成中文是“當(dāng)...的時(shí)候”,這個(gè)單詞在英語(yǔ)中,常常用來(lái)做為時(shí)間狀語(yǔ),while ... someone do somthing,這種類型的說(shuō)法是有的。2014-10-10
Pycharm安裝Qt Design快捷工具的詳細(xì)教程
這篇文章主要介紹了Pycharm安裝Qt Design快捷工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

