MVC, MTV

배추·2025년 9월 5일
0

🥷 Django

목록 보기
1/6

MVC와 MTV, 장고 웹 프로젝트 구동 방식에 대해 알아봅니다.


▶︎MVC, MTV 모델

MVC

: MVC is a modularization pattern that classifies all modules in the system into three roles.애플리케이션을 세 부분으로 나누는 디자인 패턴.
=> 모든 로직이 한 곳에 있지 않고, 특정 영역을 분리.

Model, View, Controller

1) Model: consistently store, query and alter the important data. hide and protect the user's important data. 안전하게 데이터를 저장.
2) View: communicate model data and user interface to human or computer clients. 데이터를 시각적으로 표현하는 역할.
3) Controller: receive, interpret, validate, act on and respond to client inputs or other events. process user inputs and coordinate the relevant views and models. 사용자의 입력에 반응하여 모델에 명령을 전달하고, 그 결과를 뷰에 반영하는 중재자 역할.

모듈 간의 통신 규칙

  • connections are only allowed between controllers and other modules. Non-controller modules should never talk directly to each other. 연결은 오직 컨트롤러와 다른 모듈 간에만 허용. 컨트롤러가 아닌 모듈끼리는 절대 직접적으로 통신해서는 안 된다.
  • Usually each view has only one controller associated with it. 각 뷰는 하나의 컨트롤러와만 연관되어 있다. (이 규칙은 엄격하지는 않음)

+참고) https://www.essenceandartifact.com/2012/12/the-essence-of-mvc.html

MTV

: 장고는 전통적인 MVC 패턴에서 조금 변형된 MTV 사용.
1) Model (models.py): MVC의 Model
2) Template (templates 폴더 내 HTML): MVC의 View
3) View (views.py): MVC의 Controller

▶︎Django 개념

장고 웹 프로젝트 구동 방식

  • web browser: action 발생 → 장고 서버로 들어옴(초록색 영역)
  • url dispatcher: 요청한 url 분석 → 적합한 view 호출
  • view: db 어디에 접근해서 어떤 데이터를 가공할지 판단 → 모델에 전달 (controller의 역할)
  • model: 실제 db에 접근해 데이터를 조회하거나 저장
  • db: 모델로 데이터 보냄
  • view: 받은 데이터를 template에 넘김
  • template: html, js 등 다양한 형태의 ui를 만들어 웹 브라우저로 전송

장고 프로젝트 구성과 파일

장고라는 웹 프로젝트를 생성하면 다양한 파일들이 생성된다.

  • 미들웨어: 장고 뒤에서 다양한 처리를 보조.
  • wsgi.py: web server gateway interface. 웹서버의 신호가 들어오는 인터페이스. 웹서버와 장고를 연결해준다.보통 이 파일을 직접 수정하지 않는다.
  • urls.py: 정규 표현식 기반 url 패턴 정의. → 해당하는 뷰로 보내준다(라우팅).
  • views.py: 실제적으로 파이썬 코드를 작성하는 부분. 사용자 요청에 의해서 db에 데이터를 입력할지 db로부터 데이터를 가져올지 결정하고 model에 신호를 보낸다.
  • models.py: db 테이블과 매핑되는 클래스 정의(db로부터 데이터를 가져 와서 클래스에 넣고, 그 클래스(변수)를 조작). SQL 쿼리 없이 객체 변수 다루듯 데이터 관리 가능.
    • 이전에는 db에서 쿼리를 만들어서 받으면 그 데이터를 다시 변수에 넣어서 썼다면
    • 장고에서는 모델에 변수만 지정하면 그 뒤에서 db와 연결하는 부분은 managers가 알아서 해준다.
    • 장고를 사용하면서 sql문을 사용할 필요 없고, 변수만 다루면 된다.
  • form.py: 사용자 입력 폼을 쉽게 만들고 관리하는 기능 제공. 모델과 템플릿의 ui관리를 쉽게 도와준다. 폼이 편리하게 장고에서 구성된다.
  • example.html: templates. 뷰가 전달한 데이터를 기반으로 HTML 파일 내에 UI 동적 생성. template를 만들어서 웹서버로 전송.
    • html 파일 안에 컨트롤과 관련된 로직을 삽입할 수 있음. (뷰에서 받은 데이터를 어떻게 html 파일에 잘 보여줄지에 대한 스크립트 파일들)
  • 웹서버는 정보를 browser로 보내준다.
profile
난 🥬

0개의 댓글