FBV和CBV區別
阿新 • • 發佈:2018-11-14
FBV和CBV區別
def dispatch(self, request, *args, **kwargs):
# 做分發的
if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
return handler(request, *args, **kwargs)
FBV和CBV
學習Django的時候~我們已經學習過了CBV以及FBV~~我們來複習一下~~
什麼是FBV和CBV呢~~
FBV 基於函式的檢視
CBV 基於類的檢視
也就是說我們是用函式編寫檢視~還是類編寫檢視~~我們來看下兩個的簡單實現~~
urlpatterns = [ path('admin/', admin.site.urls), path('test_fbv', test_fbv), path('test_cbv', TestCBV.as_view()) ]
def test_fbv(request): return HttpResponse("ok")
class TestCBV(View): def get(self, request): return HttpResponse("ok")
我們可以看到,我們的CBV首先執行了as_view()方法,那我們看下我們這個方法裡做了什麼~
我們可以看出~CBV在內部做了一個分發~本質和FBV是一樣的~~
以後做介面開發的時候,我們就要用CBV,我們之前學了restful規範,現在就很容易理解我們為什麼用CBV了。
面向資源程式設計,並且用HTTP的請求方式來對資源進行操作,還要遵循這些方法的語義,所以我們選擇CBV編寫我們接下來的檢視函式。