MTV 디자인 패턴 - 1
Model
데이터 관리
데이터베이스와 연결 및 실행
models.py
Template
데이터 출력
사용자에게 표현 방식 정의
html 파일
View
역할
웹 요청을 수신하고 응답하는 파이썬 함수 또는 클래스. 컨트롤러, 비즈니스 로직을 처리
views.py 형태로 django 내에 존재함.
Views를 반드는 방법에는 2가지 방법이 있습니다. FBV(Fuction Based View)와 CBV
FBV(Function Based View)
장점
- 구현이 간편함
- 읽기 쉽고 직관적인 코드
- 데코레이터의 간단한 사용법
단점
- 코드 확장과 재사용이 어려움
-> Framework 단에서 함수 만으로는 확장과 재사용이 어렵다.
- 조건부 분기를 통한 HTTP 메서드 처리
->
사용처
- 일화성, 특수 목적이 있는 곳에 FBV가 적합
CBV(Class Based View)
장점
- 코드 확장과 재사용 용이
- 다중 상속, Mixin 가능
- 내장 Class Based View 사용
-> ListView, CreateView, DetailView
단점
- 읽기 어려우며 복잡도가 높음
- 데코레이터 사용 시 함수를 재정의 해야 함
사용처
- 일반적인 생성, 조회, 수정 삭제 등의 View에 적합
무엇을 사용할까?
상황에 따라 더 나은 것을 사용한다.
MTV 디자인 패턴 -2
View가 데이터관리와 출력 역할을 수행을 한다.
DB관련 데이터를 조작 할 일이 있을 때 View가 Model에게 요청을 보내고 Model로 부터 응답을 받는다.
출력을 하고자 할 때는 View가 Template에 요청을 보내고 Template으로부터 응답을 받는다.
Model로 부터 데이터를 받아 출력 할 일이 있는 로직의 경우 View가 Model에게 데이터 요청을 해서 응
답을 받고 이를 다시 Template에 요청을 보내서 응답을 받아 출력을 하는 로직을 거치게된다.
Django 실행 흐름
Model과 Template을 거치치 않고 View 만으로도 로직이 실행될 수 있다.
구조를 모르면 버그를 찾는데 시간이 걸린다. 따라서 구조를 파악하는 것이 중요하다.
버그를 찾을 때 무엇을 없애고 돌려보고 버그가 생기는지 보고 이런 식으로 소거법으로 버그가
어디서 발생하는지 접근해야 한다.