본문 바로가기
Programming

Django MTV design pattern

by 하하호호 2021. 10. 8.
반응형

 

 

백엔드 프레임워크 디자인 패턴

MVC 디자인 패턴은 대부분의 웹 프로그램

백엔드에서 사용하는 디자인 패턴이다.

MVC(Model-View-Controller) 를 의미한다.

 

클라이언트가 URL을 통해 request를 진행하면,

백엔드의 controller가 request에 맞는

View를 호출하고, View는 그에 해당하는

Model(DB)를 호출하여, response해주는

것이 일반적인 웹 개발 백엔드의 디자인

패턴이다.

 

MVC

M(Model) - DB 모델링을 의미한다. 데이터의 타입과

종류를 결정하여, 데이터 정리를 담당한다.

 

V(View) - client가 요청한 결과물을 정리하여 

해당 HTML에 렌더링 하는 역할이다. 본질적인

client와 server간의 interface라고 할 수 있다.

 

C(Controller) - client가 요청한 View와 Model을

연결하는 역할이다. client가 어떤 URL을 요청하는지,

어떤 DB를 요청하는지를 확인하여 적절한 

연결점을 찾아준다.

 

MVC의 기능은 백엔드를 구현하기에 충분하지만,

프로젝트 규모가 커질수록 컨트롤러의 크기도

커질 수 밖에 없다. 

 

규모가 커지만 당연히 유지보수 하는데 어려움이

발생하기 마련이다. 

 

 

반면 Django에서는 MTV(Model Template View) 

디자인 패턴을 사용한다. 기본적으로 MVC와 동일한

디자인패턴의 로직을 가지고 있다.

 

 

MTV

M(Model) - DB 모델링을 의미한다. 데이터의 타입과

종류를 결정하여, 데이터 정리를 담당한다.

 

T(Template) - client가 보고 있는 화면을 의미한다.

Django View에서 해당 Template와 백엔드에서

정리한 데이터를 context 이름으로 json 형식으로

프론트로 전송하게 된다. Template가 HTML파일이라고

보면 이해가 쉽다.

 

V(View) - client가 요청한 결과물을 정리하여 

해당 HTML에 렌더링 하는 역할이다. 본질적인

client와 server간의 interface라고 할 수 있다.

 

Django에서는 MVC와는 다르게 URL config

기능을 담당하는 urls.py가 따로 존재한다.

project 디렉토리에 추가되는 앱의 urls.py를

include하여 사용하게 된다.

 

client가 요청한 page를 url confing에서 

찾아서 View와 Model을 연결하는 중간

controllor의 역할을 담당한다.

 

작동원리

1. 유저가 특정 URL 요청을 서버로 요청한다.

2. 백엔드 URL config에서 매핑을 통해 View 호출

3. View는 Model에 CRUD(Create, Read, Update, Delete) 기능 요청

4. Model은 Django ORM을 통해 DB와 연결되어 CRUD 기능 수행

5. View에서 template로 rendering 진행

6. client response를 받는다.

 

 

 

반응형

댓글