Django의 CRUD를 작성하기 위해 views.py에서 함수(def)를 이용하여 작성한다. 하지만 Django의 class를 이용하면 함수의 코드도 더욱 간단해지고 효율적이게 된다. 기존의 def 구성을 class로 수정해보기에 앞서 CBV가 뭔지 알아보자.
이 페이지에 있는 모든 설명을 지금 이해하기에는 한계가 있을 수 있다. 그러니 세션에서 진행했던 부분을 다시 따라가면서 이해해보자.
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 |