詳解Django中的FBV和CBV對比分析

在學習Django過程中在views.py進行邏輯處理時接觸到瞭兩種視圖的書寫風格,FBV和CBV

FBV 指 function based views,即基於函數的視圖

CBV 指 class based views,即基於類的視圖

基於類的視圖相較於基於函數的視圖可以更加便利的實現類的繼承封裝等。在日常使用的時候,二者的區別主要在於對於request的請求方法的處理方式

FBV

我們通過函數傳入的request的method來判斷客戶端發起的是什麼請求,並進行相應的操作,返回相應的數據。

def fbv(request):
  if request.method == 'GET':
    return HttpResponse("GET")
  elif request.method == 'POST':
    return HttpResponse("POST")
  else:
    return HttpResponse("OTHER")

在urls.py中,我們使用下面的格式來書寫路徑

path('test/', views.fbv),

CBV

我們在類中定義相應請求的方法,並在方法中實現相應的邏輯處理並返回相應的數據,這種基於類的視圖很適用於restful風格的書寫。

class CBV(View):
  @csrf_exempt
  def get(self):
    return HttpResponse("GET")

  @csrf_exempt
  def post(self):
    return HttpResponse("POST")

  @csrf_exempt
  def put(self):
    return HttpResponse("PUT")

在urls.py中,我們使用下面的格式來書寫路徑

path('test/', views.cbv.as_view()),

到此這篇關於 詳解Django中的FBV和CBV對比分析的文章就介紹到這瞭,更多相關Django FBV和CBV對比 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: