最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

Django的FBV和CBV的示例講解

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:20:29
文檔

Django的FBV和CBV的示例講解

Django的FBV和CBV的示例講解:本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Django的FBV和CBV的示例講解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。FBV : function base views, 就是在視圖里使用函數(shù)處理請(qǐng)求。urlpatterns = [ path('index/'
推薦度:
導(dǎo)讀Django的FBV和CBV的示例講解:本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Django的FBV和CBV的示例講解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。FBV : function base views, 就是在視圖里使用函數(shù)處理請(qǐng)求。urlpatterns = [ path('index/'

本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Django的FBV和CBV的示例講解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

FBV : function base views, 就是在視圖里使用函數(shù)處理請(qǐng)求。

urlpatterns = [
 path('index/', views.index),
]
# 視圖函數(shù)里
def index(request):
 return render(request,"index.html")

CBV : class base views, 就是在視圖里使用類(lèi)處理請(qǐng)求。

urlpatterns = [
 path("login/",views.LoginView.as_view())
]
# 視圖函數(shù)里
class LoginView(View):

 def dispatch(self, request, *args, **kwargs):
 """
 重寫(xiě)dispatch方法, 可以放一些專(zhuān)屬于LoginView的操作
 """
 return ...

 def get(self,request):
 return HttpResponse("OK")

 def post(self,request):
 return HttpResponse("OK")

 def put(self,request):
 return HttpResponse("OK")

 def delete(self,request):
 return HttpResponse("OK")

CBV的源碼剖析:

Django的url是將一個(gè)請(qǐng)求分配給可調(diào)用的函數(shù)的,而不是一個(gè)class。針對(duì)這個(gè)問(wèn)題,class-based view(即Django的基礎(chǔ)View類(lèi))提供了一個(gè) as_view() 的靜態(tài)方法(也就是類(lèi)方法),調(diào)用這個(gè)方法,會(huì)通過(guò) self = cls(**initkwargs) 創(chuàng)建一個(gè)類(lèi)的實(shí)例,然后通過(guò)實(shí)例調(diào)用 dispatch()方法,dispatch()方法會(huì)根據(jù)request的method的不同調(diào)用相應(yīng)的方法來(lái)處理request(如get() , post()等)。到這里,這些方法和function-based view差不多了,要接收request,得到一個(gè)response返回。如果方法沒(méi)有定義,會(huì)拋出HttpResponseNotAllowed異常。

為什么要有CBV這種模式?

python的一大重要的特性就是面向?qū)ο?。而cbv更能體現(xiàn)python的面向?qū)ο蟆bv是通過(guò)class的方式來(lái)實(shí)現(xiàn)視圖方法的。class相對(duì)于function,更能利用多態(tài)的特定(多態(tài): 可對(duì)不同類(lèi)的對(duì)象使用同樣的操作),因此更容易從宏觀層面上將項(xiàng)目?jī)?nèi)的比較通用的功能抽象出來(lái)。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Django的FBV和CBV的示例講解

Django的FBV和CBV的示例講解:本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Django的FBV和CBV的示例講解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。FBV : function base views, 就是在視圖里使用函數(shù)處理請(qǐng)求。urlpatterns = [ path('index/'
推薦度:
標(biāo)簽: 詳解 示例 fb
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top