1. 程式人生 > >談一談django中類檢視

談一談django中類檢視

1.類檢視的定義

以函式的方式定義的檢視稱為函式檢視,函式檢視便於理解。但是遇到一個檢視對應的路徑提供了多種不同HTTP請求方式的支援時,便需要在一個函式中編寫不同的業務邏輯,程式碼可讀性與複用性都不佳。

def register(request):
"""處理註冊"""

    # 獲取請求方法,判斷是GET/POST請求
    if request.method == 'GET':
        # 處理GET請求,返回註冊頁面
        return render(request, 'register.html')
    else:
        # 處理POST請求,實現註冊邏輯
        return HttpResponse('這裡實現註冊邏輯')

在Django中也可以使用類來定義一個檢視,稱為類檢視

使用類檢視可以將檢視對應的不同請求方式以類中的不同方法來區別定義。

from django.views.generic import View

class RegisterView(View):
"""類檢視:處理註冊"""

    def get(self, request):
        """處理GET請求,返回註冊頁面"""
        return render(request, 'register.html')

    def post(self, request):
        """處理POST請求,實現註冊邏輯"""
        return HttpResponse('這裡實現註冊邏輯')

類檢視的好處:
:程式碼可讀性好
:類檢視相對於函式檢視有更高的複用性, 如果其他地方需要用到某個類檢視的某個特定邏輯,直接繼承該類檢視即可

2 類檢視使用

定義類檢視需要繼承自Django提供的父類View,可使用 from django.views.generic import View或者from django.views.generic.base import View 匯入,定義方式如上所示。

配置路由時,使用類檢視的as_view()方法來新增。

urlpatterns = [
# 檢視函式:註冊
# url(r'^register/$', views.register, name='register'),
# 類檢視:註冊
url(r'^register/$', views.RegisterView.as_view(), name='register'),

]