Django中的CBV和FBV 一、 CBV CBV是採用面向對象的方法寫視圖文件。 CBV的執行流程: 瀏覽器向伺服器端發送請求,伺服器端的urls.py根據請求匹配url,找到要執行的視圖類,執行dispatch方法區分出是POST請求還是GET請求,執行views.py對應類中的POST方法或 ...
Django中的CBV和FBV
一、 CBV
CBV是採用面向對象的方法寫視圖文件。
CBV的執行流程:
瀏覽器向伺服器端發送請求,伺服器端的urls.py根據請求匹配url,找到要執行的視圖類,執行dispatch方法區分出是POST請求還是GET請求,執行views.py對應類中的POST方法或GET方法。
使用實例:
urls.py
path('login/',views.Login.as_view())
views.py
from django import views #在views.py的基礎上添加 class Login(views.Views): def get(self,request) pass def pass(self,request) pass
使用裝飾器:
from django import views from django.utils.decorators import method_decorator def outer(func): def inner(request,*args,**kwargs): return func(request,*args,**kwargs) return inner class Login(views.View): @method_decorator(outer) def get(self,request,*args,**kwargs): pass
在類上面加裝飾器,和在函數上加裝飾器是一個性質。但加的方法有所不同。
eg:
@method_decorator(outer,name='dispatch') class Login(views.View):
自定義dispatch:
class Login(views.View): def dispatch(self, request, *args, **kwargs): print(2222) ret = super(Login, self).dispatch(request, *args, **kwargs) print(1111) return ret def get(self, request, *args, **kwargs): print('GET') return HttpResponse('OK')
執行結果:2222
GET
1111
二、 FBV
FBV即在views.py中以函數的形式寫視圖。