장고에서는 view에서 사용할 수 있는 클래스를 제공해준다.
이를 사용함으로써 클래스에서 제공되는 여러가지 속성과 메소드를 상속받아 사용할 수 있다.
CBV의 속성을 많이 바꾸지 않을 경우, as_view()
메소드를 pass 하고 호출하면 된다.
as_view()
가 argument를 받을 경우, 이는 클래스의 속성을 override한다. 다음의 코드에서는 about이라는 html페이지가 나타나게 된다.
@ project urls.py
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path('about', TemplateView.as_view(template_name="about.html")),
]
장고의 views 에서 View를 import하여 CBV를 사용한다.
CBV작성시에는 def
대신에 class
를 쓰고 함수를 정의한다.
클래스의 이름은 기능명+View
로, camel format으로 쓰는게 convention이며, parameter로는 View
를 받는다.
각각의 함수는 request
를 argument로 받으며, response
를 return하도록 작성한다.