Amada Coding Club

[Django] 장고와 MTV 패턴 본문

Full-stack/Django

[Django] 장고와 MTV 패턴

아마다회장 2023. 4. 22. 17:43

이번 클라우드 프로그래밍 강의에서 Django 프레임워크를 이용한 클라우드 개발을 배운다. 

원래 강의는 공부만 하지 따로 블로그나 글로 남기지 않는데 죽어가는 내 블로그도 살릴 겸, 다시 되새기는 겸해서 블로그로 정리하고자 한다. 

Django란?

먼저 Django가 뭔지 알아보자! (영어 쓰기 귀찮으니 이제는 장고라고 부른다.) 장고는 Python으로 이루어진 오픈소스 웹 프레임워크다. 프레임워크란, 무언가를 개발할 때(장고에선 웹 개발을 할 때) 이미 형태가 갖춰져있어 빠른 속도로 개발을 할 수 있게 도와주는 도구를 말한다. 장고의 경우 이미 서버와 데이터베이스에 대한 형태가 갖춰져 있기 때문에 이 부분을 정확하게 이해하지 않더라도 빠르게 장고에 적응하고 개발을 시작할 수 있다. 

Django의 구조

장고는 크게 MTV 구조로 되어있다. MTV는 Model, Template, View이 세 가지 요소를 나타내며 디자인 패턴 중 하나인 MVC패턴과 매우 유사하다.


MVC패턴?

MVC패턴은 Model, View, Controller를 나타내며 이 세 요소가 서로 독립적으로 존재하기 때문에 서로 영향을 미치지 않아 유지보수나 유연성 면에서 장점을 가지고 있다.

MVC 패턴

MVC 패턴의 각 요소에 대한 설명은 다음과 같다.

Model

데이터를 가지고 있고 이 데이터를 처리하는 역할

View

요청한 결과물을 화면에 출력하는 역할

사용자로부터 요청을 받는 역할을 수행

Controller

Model과 View를 연결하는 역할

 

이 MVC패턴의 요소들을 MTV 패턴과 연결하면 아래와 같다.


MTV 패턴

Model

MVC의 Model에 대응

DB에 저장하는 데이터를 정의함

각 DB 테이블을 정의할 때는 하나의 클래스로 정의함

Template

MVC의 View에 대응

유저에게 보이는 화면(html 파일)

View에서 로직을 처리하고 템플릿과 context(보낼 데이터?)를 렌더링함 

View

MVC의 controller에 대응

요청에 따라 적절한 로직을 수행해서 템플릿으로 렌더링함(항상 렌더링하는 건 아니고 백엔드에서 데이터만 주고 받는 경우도 있음)

 

이 3가지 요소와 더불어 장고는 URLConf를 가지고 있음(urls.py)

URLConf

URL 패턴을 정의해 해당하는 URL과 뷰를 매핑하는 단계

 

Django의 진행 순서

1. 사용자가 특정 Url로 요청을 보냄

2. urlConf에서 해당 url과 매핑된 뷰를 호출

3. 호출된 view는 적절한 로직을 실행한 후, model에게 필요한 작업을 지시

4. model은 DB와 소통하며 필요한 CRUD 작업을 실행

5. 뷰는 지정된 템플릿을 렌더링하고 템플릿은 받은 Context와 함께 화면에 나타냄

 

다음 글에서는 가상환경에 대해 알아보자

'Full-stack > Django' 카테고리의 다른 글

[Django venv] 가상환경을 왜 사용하지?  (0) 2023.04.22