1. 程式人生 > >FBV和CBV區別

FBV和CBV區別

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編寫我們接下來的檢視函式。