Django란? , MTV패턴

guswls·2022년 7월 25일

Django 개념

목록 보기
1/5
post-thumbnail

1. Django란?


Django를 찾아보면 다음과 같은 문장을 찾아볼 수 있다.

Django는 2005년부터 시작된 python의 오픈소스 웹 프레임워크이자 풀스택 프레임워크이다.

Framework를 직역하면 "어떤 것을 뼈대로 가지고(frame) 일한다(work)" 라고 풀이할 수 있는데 즉, 어떠한 틀을 가지고 결과물을 만드는 행위라는 것이다.

이것을 구체화해서 소프트웨어에서의 Framework는 다음과 같이 불릴 수 있다.

Framework : 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램

이러한 내용을 종합했을 때 장고는 "웹 프로그래밍을 개발할 때 필요한 내용들을 정형화하여 메뉴얼로 제공하는 파이썬 기반의 프로그램, Framework" 정도로 생각하면 된다.
쉽게 말해 자바의 스프링, 루비의 RubyOnRails처럼 Django를 파이썬의 Django라고 이해하면 된다.

여담으로 FrameworkLibrary는 엄연히 다른 개념이다. 두 개 다 프로그램의 생산성을 높여준다는 공통점을 가지고 있으나 다음과 같은 차이점이 존재한다.

Framework : 애플리케이션의 흐름을 Framework 자체가 주도하여 제어

Library : 사용자가 주도하여 전체적인 흐름을 제어

Django를 사용하다보면 "정해진 위치에 코드를 넣는다" 는 느낌이 들 때가 많다. 즉, Framework가 동작흐름을 제어한다는 것이다.

하지만 대표적인 라이브러리인 React를 사용할 때를 생각해보면 개발자는 단지 라이브러리에서 함수를 꺼내 쓸 뿐, 다른 제약은 받지 않는다.

한마디로 FrameworkLibrary의 차이는 "어플리케이션의 흐름을 개발자가 가져가냐 아니냐" 정도로 생각하면 된다.


2. Django의 MTV패턴


Django에 대한 소개를 할 때 Framework라는 점을 강조해서 설명을 했었다. 그 이유가 바로 Django는 MTV패턴이라는 디자인패턴 안에서 설계가 이루어지기 때문이다.

디자인패턴은 효율적으로 코드를 작성하기 위한 코딩 규칙 혹은 프로젝트 구조 정도로 생각하면 되며 이 게시글에서는 Django에 대해서 다루기 때문에 이에 대한 자세한 내용은 추후에 다뤄볼 예정이다.

MTV패턴이란 다음을 의미한다.

Model(모델), Template(템플릿), View(뷰)MVC패턴에 대응되는 장고의 디자인 패턴

MTV패턴을 설명하는데 MVC패턴은 또 뭔가 싶을 수도 있지만 사실 MTVMVC와 이름만 다를 뿐 의미는 거의 흡사한 개념이다. 보통의 많은 백엔드 프레임워크는 MVC패턴을 사용하고 있다.

2-1. MVC패턴

MVC패턴을 프로그램을 크게 Model, View, Controller 3가지 구성요소로 나누어 관리하게 된다.

-Model : DB와 상호작용하는 부분

-View : 사용자들의 눈에 보이는 부분(사용자와 상호작용하는 부분)

-Controller : 웹서비스 내부의 동작 논리를 담당하는 부분

각각의 요소들이 고유한 역할을 하기 때문에 유지보수를 할 때 필요한 부분 이외에 변경해야 되는 내용이 최소화, 즉 유지보수에 용이하다는 장점을 가지고 있다.

2-2. MVC패턴에 대응되는 MTV패턴

위와 내용을 MTV패턴에 적용하면 다음과 같다.

-Model : DB와 상호작용하는 부분

-Template : 사용자들의 눈에 보이는 부분(사용자와 상호작용하는 부분)

-View : 웹서비스 내부의 동작 논리를 담당하는 부분

많은 사람들이 MVCViewMTVView를 헷갈려하곤 한다.

사실 장고를 다루다보면 우리는 대부분의 로직을 views.py에서 처리하기 때문에 자연스레 머리에 박히겠지만 장고에 대해서 모르는 사람들은 "뭔소리?? view가 왜 논리를 다루지?"라고 생각하기 쉽다.

중요한 내용은 아니지만 그래도 장고를 배운다면 숙지하고 있어야 되는 내용이라고 생각한다.


3. 장고의 작동원리


velog
이 그림이 장고의 작동원리를 간략하게 잘 축약하였다고 생각한다. 각각의 역할에 대한 풀이를 하면 다음과 같다.

  • Client : 서버로 url을 통해 요청request을 보내고 그에 대한 응답response을 받는다.

  • URLconf : Client에서 받은 url에 대해 서버에서 작동할 view를 매치시켜준다.

  • View : 클라이언트에서 받은 요청과 Model에 저장된 정보를 이용하여 특정 동작을 수행하고 결과를 반환한다. (Template을 사용할 경우 Template을 Rendering)

  • Model : View에서 이루어질 특정 동작에 필요한 데이터를 제공하거나 저장한다.

  • Template : Client에게 보여지는 화면에 대한 정보를 가지고 있다.

*Model의 하나하나는 DB상에 하나의 테이블로 존재하게 된다.


4. 한줄정리


  1. djangoMTV패턴을 이용한 웹프레임워크이다.

  1. MTV패턴이란 Model, Template, View로 나뉘어진 디자인 패턴을 의미
    -Model은 데이터 (DB)
    -Template은 사용자 인터페이스
    -View 는 내부 논리
profile
안녕하세요

0개의 댓글