最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Django中CBV(Class Base Views)模型源碼分析

 更新時間:2019年02月25日 08:54:16   作者:WUWANLEI  
這篇文章主要介紹了詳解Django中CBV(Class Base Views)模型源碼分析,小編覺得挺不錯的,現(xià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()進入查看源碼

實際上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)
 # 加代碼
 # 實現(xiàn)了一個類似裝飾器的效果,比如post請求,如果是json,手動從request里body取出來 再轉(zhuǎ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ù)內(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)文章

最新評論

诸暨市| 隆回县| 常山县| 仪征市| 界首市| 汝南县| 济宁市| 聂荣县| 都昌县| 合水县| 邓州市| 贡觉县| 磴口县| 花垣县| 秀山| 灌南县| 广平县| 和平县| 通海县| 平湖市| 安徽省| 全南县| 江西省| SHOW| 鄂托克前旗| 杂多县| 潍坊市| 宁津县| 尖扎县| 黔西| 石渠县| 高尔夫| 洛扎县| 楚雄市| 黄龙县| 曲水县| 樟树市| 吉木乃县| 衡水市| 乌海市| 汕头市|