[django] 장고 MTV 패턴 익히기
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: 가공한 데이터를 유저가 보는 화면으로 넘겨주기
'IT > Linux' 카테고리의 다른 글
[Python] django 게시판 글쓴이 표시 (2) (2) | 2022.11.25 |
---|---|
[Python] django 게시판 글쓴이 항목 추가하기 (1) (2) | 2022.11.24 |
[Python] django 장고 회원가입 페이지 만들기 (0) | 2022.11.02 |
[Python] django 게시판 로그인 페이지 만들기 (0) | 2022.10.28 |
[Python] django 게시판 게시물의 답변 개수 표시 (0) | 2022.10.13 |
댓글