itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • SwiftUI
  • SWIFT
  • 어플
  • binding
  • 킨디
  • mongodb
  • 개발자
  • 점주
  • 독립서점
  • nosql
  • ios
  • 연결리스트
  • POSTECH
  • CoreData
  • CS
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • AppleDevloperAcademy
  • 생활코딩
  • crud
  • 세그멘테이션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

Django - 클래스형 뷰 CBV (Class-Based View)
Web/django & python

Django - 클래스형 뷰 CBV (Class-Based View)

2021. 7. 9. 18:38

Django의 CRUD를 작성하기 위해 views.py에서 함수(def)를 이용하여 작성한다. 하지만 Django의 class를 이용하면 함수의 코드도 더욱 간단해지고 효율적이게 된다. 기존의 def 구성을 class로 수정해보기에 앞서 CBV가 뭔지 알아보자.

wikidocs에 있는 CBV의 설명, https://wikidocs.net/9623

이 페이지에 있는 모든 설명을 지금 이해하기에는 한계가 있을 수 있다. 그러니 세션에서 진행했던 부분을 다시 따라가면서 이해해보자.

CBV는 기존의 def와 크게 ①urls.py 작성법과 ②views.py 작성법에 차이가 있다.

 

①urls.py

-차이점 1

url로 항목의 id값을 받을 때 def는 <int:item_id>로 받은 반면, CBV는 <int:pk>로 받는다.

-차이점 2

def는 views.index 로 연결해주었지만, CBV는 views.index.as_view()로 연결해준다.

 

②views.py

views.py에서 제일 크게 달라진다. 일단 class를 django에서 가져와야 한다.

django의 generic을 통해 ListView(index), DetailView, CreateView, UpdateView, DeleteView를

django.urls에서 reverse_lazy(redirect)를 가져온다.

 

원래 함수 방식으로 작성한다면 우리가 직접 if문을 통해 경우마다 코드를 작성해주어야 하는 반면,

CBV를 사용하면 각각의 View에 다 저장이 되어있기 때문에 더욱 간편하고 효율적이다.

 

template_name : 연결해줄 html 파일

model : 가져오는 데이터베이스

context_object_name : 데이터베이스 중 가져올 항목

success_url : is_valid와 같은 의미

reverse_lazy : redirect와 같은 의미

 

 

이렇게 DBV를 이용하면 구문이 훨씬 깔끔해지니 이에 익숙해지는 것도 좋은 방법이라 생각한다.

'Web > django & python' 카테고리의 다른 글

[Python] 딕셔너리(dictionary) 값 추가, 삭제, key 또는 value 불러오기  (0) 2022.01.18
[Django] Form으로 checkbox의 value 전달을 위한 submit : button vs input  (0) 2021.09.03
API 활용  (0) 2021.05.25
CRUD - Read  (0) 2021.05.19
Model 실습  (0) 2021.05.18
    'Web/django & python' 카테고리의 다른 글
    • [Python] 딕셔너리(dictionary) 값 추가, 삭제, key 또는 value 불러오기
    • [Django] Form으로 checkbox의 value 전달을 위한 submit : button vs input
    • API 활용
    • CRUD - Read
    itisjustK
    itisjustK

    티스토리툴바