MVC패턴 그리고 Django의 MVT패턴

김용녀·2022년 7월 12일
0
post-thumbnail

이전에 Spring을 통해 MVC 패턴(Model View Controller)을 공부한적이 있었다.
Model-View-Controller
Model-View-Template 겉으로만 보면 별반 차이 없어보인다.
맞다. 기능에 있어서는 크게 차이가 없지만, 이름에 있어서는 착오해선 안된다.

Spring ---->Django
Model ----->Model
Controller-->View
VIew ------>Template

Spring에서 주요로직 역할을 하는 Controller를 Django에선 View가,
Spring에서 사용자들에게 화면을 반환하는 역할인 View가 Django에선 Template으로 바뀌었다.
DB와 연결되어 Data를 저장 및 반환을 돕는 Model은 Django에서도 같이 Model로 불린다.

MVC 패턴

우선 그림을 통해 MVC에 대해 먼저 알아보자.(출처-김영한 스프링MVC강의)

Http요청이 들어오면 우선 Controller가 받는다고 알고있다. 하지만 그림에는 컨트롤러가 끝에 가 있는데, 그 이유는 Controller의 세분화다.
하나의 Controller가 로직 실행, 데이터 요청 및 반환 등 너무 많은 일을 하고 코드를 짜놓고 봐도 너무 복잡해져서 유지보수도 힘들어졌다. 그래서 중심에는 로직 구현 대신 송 수신 역할을 해주는 Dispatcher Servlet이 있고
핸들러 어댑터에는 로직 구현하는 Controller을 기능에 따라 Controller를 호출시켜주고, 그 호출에 따라 핸들러(컨트롤러)는 동작을 하게 된다.
그리고 ModelAndView라는 viewName과 Model(데이터를)를 받으면 viewResolver를 통해 viewName은 View를 호출할수 있는 url으로 바뀐뒤 이후 View로 렌더링 하는 과정이다.

MVT 패턴

그렇다면 Django에서는 뭐가 바뀌어 나온걸까?
실제로도 역할에 있어서 차이가 있다고 하진않는다. 하지만 Django에 있어서 View는 Spring의 Controller처럼 모든 로직을 다 안고 가는것이 아니라, 뷰의 로직 역할 일부를 Django 프레임워크가 직접 처리해준다는것이다. 점점 늘어나는 데이터 속에서 프레임워크가 자체처리 한다는것은 매우 큰 장점이 될 수 있을거라 생각한다.

Django에서 내가 생각하는 장점 몇가지를 말해보려한다
1. 파이썬이라는 신식의 간결한 언어 자체가 주는 장점
2. 웹 개발시 다양한 라이브러리 기능 O
3. 프론트부분 자체 개발 가능(spring의 thymeleaf와 유사하게 django에는 DTL이 있다)
4. models.py을 통해 따로 따로 SQL을 이용할 필요없이 객체 생성가능
5. URL.config 모듈이 있다. URL이 urls.py에 있는지 path()를 통해 정의된 url(또는 패턴)과 함수(메서드)부분을 보고 빠르게 처리되고 관리 하기도 좋아보인다. Spring에도 불가능한건 아니지만.. 이게 훨씬 편해보인다

profile
어서오세요

0개의 댓글