디자인패턴(Desigin Pattern)은 소프트웨어 개발 방법으로 사용되며, 그동안 축적된 소프트웨어 개발 설계 노하우를 가공하여 규약으로 정리 한 것이다.
웹 설계시 발생하는 문제들을 예방 혹은 해결하기 위해 탄생하였으며, 기능별로 독립적으로 분리시킴으로써 개발 진행 시 효율을 극대화하고 부작용을 최소화 하는 것이 목적이다.
M = Model : 백그라운드 데이터(앱 정보 등)를 가지고 있으며 이를 담당한다.(DB접근)
V = View(s) : 사용자에게 보여지는 부분을 출력한다.(HTML페이지)
C = Controller(s): Model과 Viewf를 이어주는 중간 관리자의 역할이며, 사용자의 입력을 처리하고 흐름을 제어한다.
출처 : http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/mvc.html
M = Model: MVC 패턴의 Model과 동일하며 DB에 저장되는 데이터를 의미한다. 백그라운드 데이터(앱 정보 등)를 가지고 있으며, 클래스로 정의된다. Django는 ORM 기능을 지원하기 때문에 파이썬 코드로 DB 조작이 가능하다.
T = Template: MVC 패턴의 View와 동일하며, 사용자의 요청에 따라 사용자에게 보여지는 화면을 출력한다 (HTML페이지)
V = View(s): MVC 패턴의 Controller이고 데이터가 어떤 상황에서 어떻게 처리되는지를 알려주는 함수가 모여있으며, Model 과 Template을 이어주는 로직을 담당한다. 로직 처리 결과를 템플릿으로 렌더링하여 응답한다.
👉 추가적으로 Django에서는 URLconf(설계) 단계가 존재한다.
urls.py 에서 URL 패턴을 정의하여 해당 URL과 View를 mapping하는 단계이다.
- MTV 진행 순서
1) 클라이언트가 특정 URL로 요청을 보낸다.
2) URLConf모듈을 통해 URL을 분석하고 해당 URL과 매핑된 View를 호출한다.
3) 호출된 View는 자신의 로직으로 처리하고 Model에 CRUD를 지시한다.
4) Model은 ORM을 통해 DB를 조작하여 CRUD를 진행한다.
5) View는 로직 처리가 끝나면 지정된 Template을 사용하여 클라이언트에 응답할 HTML을 생성하여 응답한다.