1. 程式人生 > >Django之FBV&CBV

Django之FBV&CBV

hid port wrap es6 *args cnblogs login imp .com

CBV與FBV是django視圖中處理請求的兩種方式

FBV

FBV也就是function base views,字面意思函數基礎視圖,使用函數的方式處理請求
url分發中添加的參數為視圖處理函數名,


path(‘login/‘,views.login )

視圖中以此函數名建立處理函數


def login(req):
  if req.method==‘POST‘:
    pass
  if req.method==‘GET‘:
    pass

CBV

CBV也就是class base views,使用類的方式在視圖中處理請求
url分發添加如下


path(‘login/‘,views.login.as_view())

這裏的login為視圖中建立的類,as_view()為這個類的classonlymethod,這個方法會在內部調用dispatch函數,這個函數會根據請求方式的不同,來調用不同的處理函數如post(),get()等,所以我們要在視圖中重寫這些處理函數


class login(views.View):
    def get(self,req,*args,**kwargs):
        pass

    def post(self,req,*args,**kwargs):
     pass

這裏定義類時要繼承views.View類
對於類的屬性,可以在類的定義中定義,也可以在as_view()中添加,如as_view(name=’sfencs’)

?

Django之FBV&CBV