코딩한걸음
728x90
반응형

Q. Django의 MTV 패턴 시스템은 무엇입니까?


Django의 MTV 패턴은 Model-Template-View의 약자로 웹 어플리케이션의 구조를 나타냅니다.

Model : 데이터베이스와의 상호작용을 담당하며, 데이터의 구조와 동작(CRUD 등)을 정의합니다.
Template : 사용자에게 보여질 화면, 즉 프론트엔드 부분을 담당합니다. HTML 코드 내에 Django의 템플릿 언어를 사용하여 동적으로 데이터를 표현합니다.
View : 사용자의 요청을 받아 로직을 처리하고, 적절한 응답을 반환하는 역할을 합니다. MVC 패턴에서의 Controller와 비슷한 역할을 하지만, 사용자에게 어떤 데이터를 어떻게 보여줄 것인지 결정하는 부분까지 담당합니다.

이 패턴은 소프트웨어의 각 구성요소의 역할을 분명히 나누어, 유지보수와 확장성을 높이는 데 도움을 줍니다.

 

질문 의도

  • 프레임워크 이해도 확인 : Django의 핵심적인 디자인 패턴인 MTV에 대한 지식을 가지고 있는지
  • MVC와의 차이점 파악 : MVC 패턴과 MTV 패턴의 차이점을 알고 있는지, Django에서는 왜 MTV를 선택했는지를 알고 있는지

MVC (Model-Template-View) 패턴

Model : 데이터와 데이터를 처리하는 로직을 가짐

View : 화면에 요청에 대한 결과물을 보여주는 역할. 유저와 어플리케이션 간의 인터페이스

Controller : 모델과 뷰를 이어주는 역할. 요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달

 

Django에서 MVC가 아닌 MTV를 사용하는 이유

  • 뷰는 사용자에게 어떤 데이터를 보여줄지를 결정하며, 특정 URL에 대응하는 파이썬 콜백 함수로 구현된다.
    하지만 데이터가 어떻게 보여질지는 뷰가 아닌 템플릿에서 결정된다.
  • 템플릿은 실제로 데이터가 어떻게 보여질지를 구현한다.
    데이터의 내용과 표시 방식을 분리하는 역할을 한다.
  • Django에서의 컨트롤러는 프레임워크 자체로 볼 수 있다.
    프레임워크가 요청을 적절한 뷰로 연결하는 역할을 한다.

따라서, Django는 전통적인 MVC보다는 MTV 패턴에 가깝다고 할 수 있다.

 

출처 : https://docs.djangoproject.com/en/4.2/faq/general/#faq-mtv

 

예상 꼬리 질문

  • DTL(Django Template Language)의 주요 특징과 장단점은 무엇인가요?
  • CBV(Class Based View)와 FBV(Function Based View)의 차이점과 각각의 사용 시나리오는 무엇일까요?
  • Django에서 미들웨어는 어떤 역할을 하며, MTV 패턴과 어떻게 연관되어 있나요?

 

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!