1. 程式人生 > >Django中的CBV和FBV

Django中的CBV和FBV

url cbv imp 瀏覽器 *args 視圖 pat ali path

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中以函數的形式寫視圖。

Django中的CBV和FBV