FBV和CBV區別
FBV
CBV
-
就是在視圖里使用類處理請求
-
優點
- 提高了代碼的復用性,可以使用面向對象的技術,比如說Mixin(多繼承)
- 可以用不同的函數針對不同的HTTP方法處理,而不是通過很多if判斷,提高了代碼可讀性
-
代碼邏輯
url
from django.conf.urls import url from myapp.views import MyView urlpatterns = [ url(r'^index/$', MyView.as_view()), ]
view.py
from django.http import HttpResponse from django.views import View class GreetingView(View): name = "lin" def get(self, request): return HttpResponse(self.name)
-
實現本質: 基於反射實現的
-
流程:由路由---->as_view()方法--->view中的dispatch方法(反射實現的)
首先執行url中的as_view()方法
執行view方法
csrf
- 403報錯原理是:基於中間件的process_view方法
- 裝飾器給單獨函數進行設置(認證或跳過認證)