본문 바로가기
WebFramework/Python Django

[Python Django] 7. 간단하게 정리한 Django의 MVT 모델

by Rosmary 2024. 4. 8.
728x90
반응형

 

 

 

오래 전에 작성한(가장 최근 것이 8개월 전이다...) 몇몇 Django 포스팅 통해, Django 서버에서 필수적으로 설정해야하는 파일들에 대해 알아보았다.

 

settings.py

urls.py(1)
urls.py(2)

views.py

models.py

확실히 격세지감이라고 느끼는 것이, 필자가 Django를 처음 건드릴 때인 2021년만 해도, Django의 구조를 쉽게 이해할 수 있는 참고 서적이나 강의가 없어서 한 줄 코딩하고, 서버 돌리고, 테스트를 진행하면서 배워야했는데, 잠깐 손 놓고 있는 몇 년 사이에 이해가 쉬운 이런 저런 강의가 많이 나와버렸다. 최근 들어 필자는 Django에서 MVT 패턴이라 불리는 구조를 최종적으로 이해할 수 있게 되어, 이번 포스팅에서는 Django 프레임워크의 구조를 정리해보려한다.

 

 

 

1. Django의 Model - MVT

 

 

Java Spring 프레임워크를 접해보신 분들이라면 MVC 패턴이라는 용어를 들어보셨을 것이다. Java에서는 효율적인 웹 프로그래밍을 위해 DB와 관련된 부분(Model), 화면 페이지와 관련된 부분(View), 서버로 들어오는 요청사항을 처리하고 Model, View와 연계하며 사용자에게 데이터를 반환하는 부분(Controller)로 나누어 코딩을 진행하는데, 이들 각 부분의 앞머리 글자만 따서 MVC 패턴이라고 부른다. 

 

Django 역시 웹 프레임워크라 Java Spring 프레임워크와 마찬가지로 유사한 구조를 가지고 있다. 다만 JavaSpring에서 사용하는 용어와 조금 다른데, Django에서는 위와 같은 구조를 MTV 모델이라고 한다.

 

  Django Java Spring
DB 관련 (데이터 저장 구조 정의) Model Model
Front End Page 관련 Templates View
요청 처리 및 백엔드 동작(Ctrl) View Controller

 

 

명칭만 다를 뿐, DB, 화면, 백앤드 구성으로 나뉜다는 점은 Java Spring과도 동일한 구조다. 다만 Django에서 말하는 View와 Java Spring에서 말하는 View가 달라, 첫 프레임워크를 Java Spring으로 접하신 분들이라면 조금 헷갈릴 수 있는 부분이다. 

 

 

 

3년 전에, 필자가 MTV 모델의 전체는 아니지만 일부 동작 과정을 직접 도식화 한 자료가 있다.

 

 

 

저 그림 다시 보니, 테스트를 하면서 작성한 것 치고는 얼추 맞긴 한데, models.py처럼 빠진 내용도 있고 보기도 어려우니 아래와 같이 그림을 바꿔보려한다.

 

우선은 Request 요청에 대한 상황만 가정했다.

 

 

Django 서버는 서버로 들어오는 사용자의 요청을 받은 뒤, 사용자가 요청한 주소가 실제로 존재하는 주소인지 1차적으로 확인한다. 만약 존재하는 주소이며 해당 주소와 매핑된 앱이 settings.py의 INSTALLED_APP에 명시되어 있다면, Django는 해당 App의 views.py 파일을 참고하게 된다. 만약 프로젝트 폴더의 urls.py에서 사용자 요청 주소가 App 폴더의 urls.py를 참조하도록 include되어 있다면, App 폴더의 urls.py에 작성된 App의 views 정보를 참조하게 된다.

 

views.py에 도달한 사용자 요청은, views.py에 정의된 랜더링 페이지를 templates 폴더에서 검색한다. 여기에 더불어, DB의 특정 정보를 호출하거나 변경하는 경우라면 views.py는 models.py에 정의된 내용을 참고하여 DB 파일 또는 서버 내에 정의된 테이블 정보를 검색하거나 변경한다.

 

 

 

End.

 

반응형

댓글