Skip to content

Latest commit

 

History

History
100 lines (77 loc) · 3.63 KB

README.md

File metadata and controls

100 lines (77 loc) · 3.63 KB

Django의 디자인 패턴

📜 Django란?

MVC 패턴를 기반으로 한 MTV 패턴이 적용된 웹 프레임워크

프레임워크란?

소프트웨어의 설계와 구현을 재사용이 가능하도록 일련의 협업화된 형태로 클래스들을 제공하는 것

  • 회원가입, 로그인/로그아웃 등 사용자 정보를 다루는 기능에 대한 클래스
  • 백엔드에서 움직이는 데이터를 처리하고 저장하는 방식에 대한 클래스

🧩 디자인 패턴이란?

소프트웨어 개발 중 자주 발생하는 문제를 해결하기 위해 방법을 패턴화한 설계의 원칙

🧩 MVC 패턴이란?

Model View Controller로 구성된 소프트웨어 개발의 디자인 패턴 중 하나로, 애플리케이션을 세 가지의 역할로 구분한 개발 방법론

→ 유지보수성 · 확장성 · 유연성 증가, 중복 코딩의 문제 해결

MVC 패턴

Model

  • 데이터와 상호작용
  • Django의 Model에 정의된 1개의 class = DB의 1개의 table
  • ViewController의 정보 포함하면 안됨

View

  • 사용자 인터페이스 담당
  • 데이터 입력/출력/전달하는 역할
  • View 자체에 데이터가 저장되어서는 안됨

Controller

  • ModelView 연결
  • 사용자의 모든 행동을 처리, 로직 수행하는 역할
  • Model View와 달리 사용자의 정보 모두 포함

MVC 패턴을 웹에 적용하면?

  1. 사용자가 웹사이트에 접속 → Uses
  2. Controller는 사용자가 요청한 웹사이트를 서비스하기 위해 Model 호출 → Manipulates
  3. Model은 DB나 파일과 같은 데이터 소스를 제어한 후 그 결과를 리턴
  4. ControllerModel이 리턴한 결과를 View에 반영 → Updates
  5. 데이터가 반영된 View가 사용자에게 보여짐 → Sees

🧩 MTV 패턴이란?

Model Template View + URLconf로 MVC에 대응되는 Django의 디자인 패턴

MTV 패턴

Model

  • MVC 패턴의 Model에 대응
  • Django의 Model에 정의된 1개의 class = DB의 1개의 table
  • Django는 ORM(Object Relational Mapping) 기능을 지원하기 때문에 python 코드로 DB 조작 가능

Template

  • MVC 패턴의 View에 대응
  • Django는 View에서 로직 처리한 후 html 파일을 context와 함께 렌더링, 여기서 html 파일이 Template
  • Django의 자체적인 Django Template 문법 덕분에 html 파일 내에서 context로 받은 데이터 활용 가능

View

  • MVC 패턴의 Controller에 대응
  • 요청에 따른 적절한 로직을 수행하여 결과를 Template으로 렌더링하며 응답
  • Template으로 렌더링하거나 백엔드에서 데이터만 주고받기도 함

URLconf

  • 장고만의 차이점
  • URL 패턴을 정의하여 해당 URL과 View를 매핑

💡 Summary
MVC MTV
데이터와 상호작용 Model Model
사용자 인터페이스 View Template
데이터와 사용자 인터페이스 연결 Controller View

Django 디자인 패턴