본문 바로가기
Research/Django

[Django] MVT 모델에 관하여

by RIEM 2021. 12. 1.

README

이 게시글은 장고MVT모델의 기본 구조에 대한 간략한 설명과 이 개념을 기반으로 현재 진행중인 프로젝트의 구조를 설명한 게시글입니다.

장고 MVT 모델 

Django는 MVT모델 기반으로 만들어졌다. MVT는 Model, View, Template을 지칭한다. 

 

MVT모델 관점에서 장고의 작동 프로세스는 아래와 같다.

1. User Request : 유저가 URL을 통해 request를 한다

2. URL resolving : 해당 URL과 매핑된 View로 연결된다. 이때 URL의 아규먼트 또한 view로 함께 보낸다.

3. View Logic : View는 어떤 행동을 취할지에 대한 로직을 담고 있다. 그 로직이 어떤 모델(DB)와 어떤 Template(화면)을 어떻게 다룰지 명령한다.

4. Model : ORM으로 DB에 연결된 데이터들을 담고 있다. Template으로 보낼 데이터를 View에 제공한다.

5. Template : view로부터 얻은 데이터들이 Template으로 보내지면서 최초 유저의 request에 대한 반응을 화면으로 나타내어 준다.



 

장고의 MVT모델 기반 프로세스를 구조화해보았다.

 

 

위 장고 구조를 현재 진행중인 ‘이미지에서 기내 위험수화물을 탐지하는 앱’ 프로젝트에 적용하여 구조를 표현하면 아래와 같다.

 

app 관점에서의 장고 프로젝트 구조도

프로젝트에는 common, Core, detection 등의 app이 있다. app과 동일한 이름의 폴더가 있다. 이는 장고에는 app을 생성할 때마다 app의 정보를 담은 폴더들이 생성되기 때문이다.

 

Templates 관점에서의 장고 프로젝트 구조도

 

Templates 구조도 눈여겨볼 필요가 있다. ~base.html~ template은 상속을 위한 기본 템플릿이다. 웹페이지에 수 많은 페이지들이 있는데 각 페이지들의 html을 매번 작성할 경우 비효율로 인해 관리의 어려움이 발생한다. 웹페이지의 뼈대가 되는 부분을 base.html 템플릿으로 구축해두고 이를 다른 페이지들에 상속을 시키는 방법으로 이 문제를 해결할 수 있다.

 

댓글