Lina's Toolbox

Django의 MTV Pattern 본문

스파르타 내일 배움 캠프 AI 웹개발 과정/Django framework

Django의 MTV Pattern

Woolina 2024. 8. 10. 03:45

 

 

디자인 패턴이란?

디자인 패턴은 자주 사용되는 소프트웨어의 구조를 마치 건축 공법처럼 일반화한 것이에요!

 

현수교(Suspension Bridge)

교량의 양쪽 끝과 가운데의 주탑에 케이블을 두고 상판을 메다는 형식의 공법으로 만들어 진다고 합니다.

→ 즉, 만드는 방식이 똑같아요!

 

이런 다리를 여러번 짓다보니까 자주 사용되는 구조들이 있으니, 그것들에 이름붙여서 일반화 해두면 좋지않을까요?

 

💡 이러한 아이디어를 소프트웨어로 가져와 봅시다.

다양한 응용 소프트웨어를 만들다보니 공통적인 구조와 문제가 발생합니다. 이 때, 구조에도 공통점이 있고, 문제에도 공통점이 존재합니다.

패턴 (Pattern)이 보여요!


 

소프트웨어의 디자인 패턴

 

전세계의 개발자들이 개발을 하다보니 비슷한 문제를 해결하는 공통적인 구조를 발견합니다.

  • 벌써 우리가 이미 배운 디자인 패턴이 있답니다!
  • 클라이언트-서버  역시 소프트웨어 디자인 패턴중 하나에요.
  • 즉, 디자인 패턴은 자주 사용되는 소프트웨어의 구조를 마치 건축 공법처럼 일반화 해둔 것입니다.

왜 필요할까요?

  • 특정 구조에 대한 설계를 빠르게 할 수 있습니다.
  • 공통적으로 발생하는 문제에 대해 재사용 가능한 해결 방법을 제시할 수 있습니다.
  • 즉, 프로그래머가 시스템을 디자인할 때 발생하는 공통된 문제를 해결하면서 진행할 수 있는 형식화된 관행입니다.

Django의 디자인 패턴

  • Django의 설계 철학에도 디자인 패턴이 적용되어 있습니다.

    그런데 사실 👀
  • → MTV 패턴은 MVC 패턴을 살짝 변형한 것입니다.
  • MTV Pattern 이라고 해요!

MVC 디자인 패턴

  • Model - View - Controller 이렇게 3파트로 나누어져있습니다.
  • 데이터와 논리 구조를 제어하는 설계로 널리 사용되는 디자인 패턴 중 하나입니다.
  • → 하나의 큰 소프트웨어를 나눠서 생각해보기 위해서 등장한 패턴이에요!

역할

  • Model : 데이터와 관련된 로직을 관리
  • View : 레이아웃과 관련된 화면을 처리
  • Controller : Model과 View를 연결하는 로직을 처리

💡 왜 이렇게 분리하는 걸까요?

  • 관심사를 분리하기 위해서 입니다.
  • 각 부분을 독립적으로 개발할 수 있어서 생산성이 증가하고 유지보수가 쉬워집니다.
  • 다수의 멤버가 동시에 개발하기도 용이합니다. 

Django의 MTV Pattern

사실 거의 똑같고 이름만 달라요!

 

MVC vs MTV
MVC MTV
Model Model
View Template
Controller View

→ View의 기능을 Template이, Controller의 기능을 View가 수행해요!

 

 

MTV Pattern

  • Model
    • MVC에서의 Model입니다.
    • 데이터와 관련된 로직을 처리합니다.
    • → 데이터 구조 정의, 데이터베이스 기록 관리해요.
  • Template
    • MVC에서의 View입니다.
    • 레이아웃과 화면상의 로직을 처리
    • →즉, UI와 레이아웃을 다루어요.
  • View
    • MVC에서의 Controller입니다.
    • 메인 비지니스 로직을 담당합니다.
    • 클라이언트의 요청에 대해 처리를 분기하는 역할을 합니다.
      • DB도 조회하고 외부로 요청하기도 해요.
      • 응답을 만들어서 클라이언트에게 전달해요.

 

urls.py가 먼저 받아서 어떤 view로 보낼 지 고민.

views.py 에 들어온 로직을 요청에 따라 Model에 요청.

models.py에서 데이터 처리한것 화면에도 건내줌

클라이언트(HTTP) 에게 Response를 줌 (HTML, JASON 등의 다양한 형식으로 준다.)

 


요약

1. Django의 디자인 패턴은 무엇인가요?

MVC 패턴을 변형한 MTV 디자인 패턴이 적용되어 있어요

 

2. Django의 Model은 어떤 역할을 하나요?

데이터 관련 처리를 해요

 

3. Django의 Template은 어떤 역할을 하나요?

화면 관련 처리를 해요

 

4. Django의 View은 어떤 역할을 하나요?

Model & Template 중간 로직을 처리하고, 메인 비지니스 로직을 담당해요!