[django] 장고 MTV 패턴 익히기
본문 바로가기

[django] 장고 MTV 패턴 익히기

액트 2022. 11. 17.

MTV 패턴

 

장고는 MVC(Model-View-Controller)를 기반으로 한 프레임워크입니다. 

하지만 장고에서는 같은 개념을 MTV(Model-Template-View) 라고 부릅니다.

MTV는 Model(데이터), View(사용자 인터페이스), Controller(데이터 처리 로직)을 구분해 한 요소가 다른 요소들에게 영향을 주지 않도록 설계한 방식입니다.

 

Model(모델)

모델은 DB에 저장되는 데이터를 의미합니다.

모델은 클래스로 정의되며 하나의 클래스가 하나의 DB Table입니다.

원래 DB를 조작하기 위해선 SQL이라는 DB 언어를 다룰 줄 알아야 하지만 장고는 ORM기능을 지원하기 때문에 파이썬 코드로 DB를 조작할 수 있습니다. 

ORM이란

Object Relational Mapping의 약자로 SQL 이라는 언어 대신 데이터베이스를 쉽게 연결해주는 방법입니다.

Template(템플릿)

사용자에게 보여지는 화면을 의미합니다.

장고는 뷰에서 로직을 처리한 후 html 파일을 context와 함께 렌더링하는데 이 때의 html 파일을 템플릿이라 칭합니다.

장고는 자체적인 Django Template 문법을 지원하며 이 문법 덕분에 html 파일 내에서 context로 받은 데이터를 활용할 수 있습니다.

View(뷰)

뷰는 웹 요청을 받고 전달받은 데이터들을 해당 애플리케이션의 로직으로 가공하여 결과를 템플릿에 보냅니다.

URLconf (URL 설계)

URL은 view와 template를 매핑해주는 역할을 합니다. 이 매핑하는 작업을 URLconf 라고 합니다.

from django.urls import path
from . import views

app_name = 'project'

urlpatterns = [
    path('', views.HomeView.as_view(), name='home'),
    path('login/', views.LoginView.as_view(), name='login'),
]

이와 같이 path함수를 이용해 URL을 뷰와 손쉽게 매핑시킬 수 있습니다.

그림으로 정리하면 아래와 같습니다.

정리

  • Model: 데이타베이스에 데이터 저장 형태 처리 
  • Template: 유저에게 보여지는 화면
  • View: 로직에 따른 데이터 가공 및 처리
  • URLconf: 가공한 데이터를 유저가 보는 화면으로 넘겨주기

댓글