๐ ์ด ํฌ์คํ ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์น ํ๋ ์์ํฌ์ ์ฐจ์ด์ ๊ณผ Django์ MVT ํจํด์ ๋ํด์ ์ ๋ฆฌํ์์ต๋๋ค.
๐ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์น ํ๋ ์์ํฌ์ ์ฐจ์ด
๐ฅ Django์ MVT ํจํด
๐ฅ ์น์ฌ์ดํธ์ ํ๋ฆ
โ๏ธ ํ๋ ์์ํฌ๋ ๋ผ๋๋ ๊ธฐ๋ฐ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋๋ฐ, Application ๊ฐ๋ฐ ์ ๊ณตํต์ ์ผ๋ก ํ์ํ ์ฝ๋, ์๊ณ ๋ฆฌ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ๊ณจ๊ฒฉ์ ๊ฐ์ถ์ด ์ ๊ณตํด์ค๋ค. python์ ๋ํ์ ์ธ ํ๋ ์์ํฌ๋ django๊ฐ ์๋ค.
โ๏ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ๊ธฐ๋ฅ์ ์ํ ํจ์(๋๊ตฌ)๋ฅผ ๋ชจ์ ์งํฉ์ ์๋ฏธํ๊ณ , ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ๋ฐํ๋๋ฐ ํ์ํ ๊ฒ๋ค์ ๋ชจ์๋ ๊ฒ์ผ๋ก ํ์ํ ๋ ํธ์ถํด ์ฌ์ฉํ๋ค. javascript์ ๋ํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ react์ด๋ค.
โ๏ธ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐจ์ด๋ Flow(ํ๋ฆ)์ ๋ํ ์ ์ด ๊ถํ์ด ์ด๋์ ์๋๋์ ์๋ค. ํ๋ ์์ํฌ๋ ์ ์ฒด์ ์ธ ํ๋ฆ์ ํ๋ ์์ํฌ๊ฐ ์ฅ๊ณ ์์ผ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ฆ์ ๋ํ ์ ์ด๋ฅผ ๊ฐ๋ฐ์๊ฐ ๊ฐ๊ณ ์๋ค๊ฐ ํ์ํ ์ํฉ์ ๊ฐ์ ธ๋ค ์ฐ๋ ๊ฒ์ด๋ค.
โ๏ธ MTV ํจํด์ MVC(Model-View-Controller) ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ๋ ์์ํฌ์ด๋ฉฐ, Django์์ MVC ํจํด์ MTV๋ผ ์นํ๋์ด ์ฌ์ฉ๋๋ค. ์ฌ๊ธฐ์ M์ Model, T๋ Template, V๋ View์ ์ฝ์์ด๋ค.
โ๏ธ Model์ Database์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๋ํ ์คํค๋ง๋ฅผ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๊ณ , Model์ models.py ์์ class๋ก ์์ฑํ์ฌ ์ฌ์ฉํ๋ค. Djangp๋ ORM(Object-Relational Mapping)์ด๋ผ๋ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋งคํ(Mapping)ํด์ค์ผ๋ก์จ ์์ฝ๊ฒ Database๋ฅผ ์ ์ดํ ์ ์๊ฒ ํด์ค๋ค. ์ฆ, ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋ ์์ฑํ์ฌ SQL์ฟผ๋ฆฌ๋ฌธ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
โ๏ธ Django์์ View๋ ๋ค๋ฅธ ์ผ๋ฐ MVC Framework์์ ๋งํ๋ Controller์ ์ ์ฌํ ์ญํ ์ ํ๋ค. ์ด์ View๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์น ํ์ด์ง์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๋๋ก ์ ๋ฐ์ ์ธ ์ ์ด๋ฅผ ๋งก๋๋ค. ์๋ฅผ๋ค์ด, ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ํด views.py์ ๋ก์ง์ผ๋ก ๊ตฌ์ฑ๋ ํจ์ ๋๋ ํด๋์ค๋ค๊ฐ ์คํ๋๊ณ , ๋ก์ง์ด ์ฒ๋ฆฌ๋๋ ๊ณผ์ ์์ ํ์์ ๋ฐ๋ผ DB์ ์ํธ์์ฉ์ด ์ด๋ค์ง๋ค.
โ๏ธ Template์ ์ต์ข ์ ์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ HTML๋ก, View์ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ํตํด ํด๋ผ์ธํธ๋ก ์๋ต๋๋ค.
โ๏ธ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์๋ฒ์ request๊ฐ ์ ๋ฌ๋๋ฉด, URLconf๋ฅผ ์ด์ฉํ์ฌ URL์ ํ์ฑํ๋ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ํตํด ํด๋น URL์ด ํธ์ถํ View์ ๋ก์ง์ ๊ฒฐ์ ํ๋ค.
โ๏ธ View๋ ์์ ์ ๋ก์ง์ ์คํํ๋ฉด์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด Model๊ณผ ์ํธ์์ฉํ๋ค.
โ๏ธ ์ด ๋ก์ง์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ฉด, Template๊ณผ ํจ๊ป ํด๋ผ์ด์ธํธ๋ก ๋ฐํ๋๋ค.
โ๏ธ ํด๋ผ์ด์ธํธ๋ ์ด response๋ฅผ ์ ๋ฌ๋ฐ์ ํ๋ฉด์ ์ต์ข ์ ์ธ ๊ฒฐ๊ณผ๋ฌผ์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ค.