정리
- 클래스형 뷰는 재사용성을 위해 만들어졌다.
- 함수형 뷰 보다는 클래스형 뷰가 복잡하기 때문에 적절하게 섞어 사용하는 것이 좋다.
- 개발 시 함수형 뷰로 구현을 한 다음 클래스형 뷰로 리펙토링 하는 것을 추천한다.
Fuction Base View 예시
Style 1
def greeting(request, message='Good Day'):
return HttpResponse(message)
def morning_greeting(request):
return greeting(request, 'Good Morning')
def evening_greeting(request)
return greeting(request, 'Good Evening')
Style 2
def greeting_view(message):
def view_fn(request):
retunr HttpResponse(message)
return view_fn
greeting = greeting_view('Good Day')
morning_greeting = greeting_view('Good Morning')
evening_greeting = greeting_view('Good Evening')
Class Base View 예시
from django.http import HttpResponse
from django.views import View
class GreetingView(View):
message = 'Good Day' # Class Variable
def get(self, *args, **kwargs):
return HttpResponse(self.message)
greeting = GreetingView.as_view()
class MorningGreetingView(View):
message = 'Good Morning' # Class Variable 재정의
morning_greeting = MorningGreetingView.as_view()
evening_greeting = GreetingView.as_view(message='Evening to ya')