MVT ํจํด
graph LR; A["๐ ์์ฒญ/Request"] --> B["๐ฑ View"]; B --> C["๐ Model"]; C --> B; B --> D["๐จ Template"]; D --> E["๐ซ ์๋ต/Response"];
Mermaid
๋ณต์ฌ
MVT(Model-Template-View)๋ Django ์น ํ๋ ์์ํฌ์์ ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์
๋๋ค.
MVT๋ Model, Template, View์ ์ฝ์๋ก, ๊ฐ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ํํฉ๋๋ค:
โข
Model (๋ชจ๋ธ): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ๋ก์ง์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ์ ํจ์ฑ์ ๊ด๋ฆฌํฉ๋๋ค.
โข
Template (ํ
ํ๋ฆฟ): ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ UI ๋ถ๋ถ์ ๋ด๋นํ๋ฉฐ, HTML ํ์ผ์ ํตํด ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ํ์๋ ์ง ์ ์ํฉ๋๋ค.
โข
View (๋ทฐ): ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๋ชจ๋ธ๊ณผ ํ
ํ๋ฆฟ์ ์ฐ๊ฒฐํ๋ ์ค๊ฐ ๊ด๋ฆฌ์ ์ญํ ์ ํฉ๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ ๊ฐ ์ญํ ์ ๋ช
ํํ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ค๋๋ค.
Django์์์ MVT
Django MVT ํจํด ๊ฐ ๊ตฌ์ฑ ์์์ ์ฃผ์ ์ญํ ๊ณผ ์ฑ
์์ ํ๋ก ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
๊ตฌ์ฑ ์์ | ์ฃผ์ ์ญํ | ์ฑ
์ |
Model | ๋ฐ์ดํฐ ๊ด๋ฆฌ | ยท๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ ์ ์
๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ
๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์กฐ์ |
Template | ํ๋ฉด ํ์ | ยทHTML ๋ ๋๋ง
์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ฑ
๋ฐ์ดํฐ ํ์ ํ์ ์ง์ |
View | ๋ก์ง ์ฒ๋ฆฌ | ยทHTTP ์์ฒญ ์ฒ๋ฆฌ
๋น์ฆ๋์ค ๋ก์ง ์คํ
Model๊ณผ Template ์ฐ๊ฒฐ |
MVT vs MVC
MVT (Django) | MVC (์ผ๋ฐ์ ์ธ ํจํด) |
Model | Model |
Template | View |
View | Controller |
Django์ MVT ํจํด์ ์ ํต์ ์ธ MVC ํจํด์ ๋ณํ์ผ๋ก, ๊ฐ์ ๊ฐ๋
์ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. Template์ MVC์ View์, Django์ View๋ MVC์ Controller์ ๋์๋ฉ๋๋ค.
MVT์ MVC์ ์์ธ ๋น๊ต
1. ๊ตฌ์กฐ์ ์ฐจ์ด์
MVC๋ Model-View-Controller, MVT๋ Model-Template-View๋ก ๊ตฌ์ฑ๋์ด ์์ง๋ง, ์ค์ ์ญํ ๋ถ๋ด์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
2. ์ปดํฌ๋ํธ๋ณ ์ญํ ๋น๊ต
โข
Model: ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋น
โข
View: ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์ธํฐํ์ด์ค ๋ด๋น
โข
Controller: ์ฌ์ฉ์ ์
๋ ฅ์ ์ฒ๋ฆฌํ๊ณ Model๊ณผ View๋ฅผ ์ฐ๊ฒฐ
โข
Model: MVC์ Model๊ณผ ๋์ผํ ์ญํ ์ํ
โข
Template: MVC์ View์ ํด๋นํ๋ฉฐ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์
โข
View: MVC์ Controller ์ญํ ์ ์ํํ๋ฉฐ, HTTP ์์ฒญ ์ฒ๋ฆฌ ๋ฐ ๋ก์ง ์คํ
3. ์ฃผ์ ํน์ง ๋น๊ต
๋น๊ต ํญ๋ชฉ | MVC | MVT |
ํ๋ ์์ํฌ ์์ | Spring, Ruby on Rails | Django |
๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์ | Controller๊ฐ ์ค์ฌ | View๊ฐ ์ค์ฌ |
ํ
ํ๋ฆฟ ์ฒ๋ฆฌ | View์์ ์ฒ๋ฆฌ | ๋ณ๋์ Template ์์คํ
|
์ฝ๋ ๊ตฌ์กฐ | ๋ ์๊ฒฉํ ๊ตฌ์กฐ | ๋ ์ ์ฐํ ๊ตฌ์กฐ |
4. ์ฅ๋จ์
MVC ํจํด์ ์ฅ๋จ์
MVT ํจํด์ ์ฅ๋จ์