∟Framework/∟Django

Django - Design Patterns

최 수빈 2025. 1. 8. 12:00

 

디자인 패턴

 

 

 

자주 사용되는 소프트웨어의 구조와 문제 해결 방법을 일반화한 개념

디자인 패턴을 통해 소프트웨어 개발 과정에서 공통적으로 발생하는 문제를 효과적으로 해결 가능

 

클라이언트-서버 구조도 하나의 디자인 패턴

 

 

 

소프트웨어에서의 공통 구조: 디자인 패턴

 

소프트웨어 개발 시 다양한 응용 프로그램을 만드는 과정에서 공통적인 구조 문제를 발견

→ 이를 해결하기 위해 디자인 패턴이 탄생

 

설계를 빠르고 효율적으로 진행

공통 문제에 대해 재사용 가능한 해결책을 제공

개발 생산성을 높이고 유지보수를 쉽게 함

 

 

 

Django와 디자인 패턴

 

 

Django 프레임워크는 설계 철학에 따라 디자인 패턴을 활용 → MTV 패턴 구조를 채택

 

 

 

MVC 패턴

 

MVC는 소프트웨어를 Model, View, Controller의 세 가지 부분으로 나누는 디자인 패턴

 

Model: 데이터와 관련된 로직 처리

View: 사용자 인터페이스(UI)와 레이아웃을 담당

Controller: Model과 View 사이의 상호작용(비즈니스 로직)을 처리

 

관심사 분리로 각 구성 요소를 독립적으로 개발 가능

유지보수와 협업이 용이

 

 

Django의 MTV 패턴

 

MTV 패턴은 MVC 패턴을 Django의 방식으로 변형한 것 (이름과 역할에 차이가 있음)

 

MVC MTV
Model Model
View Template
Controller View

 

 

Model

데이터 관리 

데이터와 관련된 로직 처리

데이터베이스 구조 정의 및 관리

 

Template

UI 및 레이아웃

사용자 인터페이스(UI)와 레이아웃 처리

화면에 표시될 내용을 정의

 

View

요청 처리와 응답 생성

비즈니스 로직을 담당

클라이언트 요청을 처리하고 적절한 응답 생성

 

 

 

https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Server-side/Django/Home_page

 

 

 

 

 

 

 MTV 패턴 vs. MTV 아키텍처

 

구분 MTV 패턴 MTV 아키텍처
의미 특정 상황에서 반복적으로 사용되는 설계 방식 또는 문제 해결 방법을 의미 Django 프레임워크의 설계 철학을 구체화하고 전체적인 구성 방식을 설명
설명 방식 Django에서 사용되는 디자인 패턴, 소프트웨어의 구조를 Model, Template, View로 나누어 설명 MTV 패턴이 실제로 구현되는 방식과 Django의 설계 철학을 반영한 구조적 설계를 설명
강조점 문제 해결 방식과 구조적 개념, 재사용성 및 일관성에 초점 전체 시스템의 구현 방법과 구성 요소 간의 상호작용에 초점
특징 일반적 원칙을 통해 코드 설계와 로직 분리로 생산성 향상 강조 MTV 패턴을 기반으로 실제 웹 애플리케이션의 동작과 구조 구현을 강조

 

기본적으로 같은 구조를 설명하지만, “패턴”은 설계의 일반적 원칙을 강조, “아키텍처”는 시스템의 구체적 구성과 구현을 설명하는 데 사용

 

Django에서 이 두 용어가 상황에 따라 교차 사용될 수 있지만, 

MTV 아키텍처는 더 큰 그림을, MTV 패턴은 설계 철학의 원칙을 말할 때 적합

 

 


 

 

Django

 

Django

Django Python 기반으로 작성된 웹 프레임워크웹 개발을 위한 모든 필수 도구를 포함한 풀스택 프레임워크웹사이트의 백엔드(서버 측 논리)와 프론트엔드(HTML, CSS, JavaScript 등)을 효율적으로 연결할

s2bibiprincess.tistory.com

 

'∟Framework > ∟Django' 카테고리의 다른 글

Django - Template  (0) 2025.01.09
Django - Request & Response  (0) 2025.01.07
Django - Client↔Server  (2) 2025.01.07
Django - App  (1) 2025.01.06
Django - Project  (3) 2025.01.03