(Django) Class-based views (CBV)

Kepler·2020년 2월 7일
1

Django

목록 보기
2/12

장고에서는 view에서 사용할 수 있는 클래스를 제공해준다.
이를 사용함으로써 클래스에서 제공되는 여러가지 속성과 메소드를 상속받아 사용할 수 있다.

CBV를 사용하는장점

  • Http 메소드에 따른 처리코드 작성시 if함수대신 메소드명으로 대체가 가능하여, 구조가 깔끔하다.
  • 객체지향의 여러가지 기법을 활용해 코드의 재사용과 생산성을 높여준디.

CBV를 사용할때의 URLs의 설정 : as_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")),
]

View의 설정

  • 장고의 views 에서 View를 import하여 CBV를 사용한다.

  • CBV작성시에는 def 대신에 class 를 쓰고 함수를 정의한다.

  • 클래스의 이름은 기능명+View로, camel format으로 쓰는게 convention이며, parameter로는 View를 받는다.

  • 각각의 함수는 request를 argument로 받으며, response를 return하도록 작성한다.

image.png

profile
🔰

0개의 댓글