久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

Django CBV模型源碼運(yùn)行流程詳解

瀏覽:50日期:2024-09-23 15:07:20

在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()),

通過as_view()進(jìn)入查看源碼

Django CBV模型源碼運(yùn)行流程詳解

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

Django CBV模型源碼運(yùn)行流程詳解

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

Django CBV模型源碼運(yùn)行流程詳解

若要在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取出來 再轉(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)求來了,就會(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í)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 长沙市| 芦溪县| 博罗县| 新邵县| 祁连县| 阳泉市| 黑山县| 烟台市| 黄浦区| 新巴尔虎左旗| 焦作市| 绍兴县| 治多县| 周宁县| 玉门市| 潞城市| 金华市| 咸宁市| 乌鲁木齐县| 阿坝县| 临高县| 新疆| 错那县| 南通市| 饶阳县| 鄂尔多斯市| 镇雄县| 长武县| 通州市| 怀仁县| 鹤庆县| 通许县| 甘孜县| 商丘市| 晋江市| 依安县| 呼图壁县| 大兴区| 汉中市| 法库县| 石渠县|