Django CBV模型源碼運(yùn)行流程詳解
在view文件中編寫一個類,并配置好路由
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()),
通過as_view()進(jìn)入查看源碼

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

