TIL37. Django Kickoff : Django MVT ํŒจํ„ด

ID์งฑ์žฌยท2021๋…„ 10์›” 14์ผ
0

Django

๋ชฉ๋ก ๋ณด๊ธฐ
31/43
post-thumbnail

๐Ÿ“Œ ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด์ ๊ณผ Django์˜ MVT ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.



๐ŸŒˆ Django MVT ํŒจํ„ด

๐Ÿ”ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด

๐Ÿ”ฅ Django์˜ MVT ํŒจํ„ด

๐Ÿ”ฅ ์›น์‚ฌ์ดํŠธ์˜ ํ๋ฆ„



1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด

๐Ÿค” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ž€?

โœ”๏ธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ผˆ๋Œ€๋‚˜ ๊ธฐ๋ฐ˜๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, Application ๊ฐœ๋ฐœ ์‹œ ๊ณตํ†ต์ ์œผ๋กœ ํ•„์š”ํ•œ ์ฝ”๋“œ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ๊ณจ๊ฒฉ์„ ๊ฐ–์ถ”์–ด ์ œ๊ณตํ•ด์ค€๋‹ค. python์˜ ๋Œ€ํ‘œ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” django๊ฐ€ ์žˆ๋‹ค.

โœ”๏ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ํ•จ์ˆ˜(๋„๊ตฌ)๋ฅผ ๋ชจ์€ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•˜๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ๋ชจ์•„๋‘” ๊ฒƒ์œผ๋กœ ํ•„์š”ํ•  ๋•Œ ํ˜ธ์ถœํ•ด ์‚ฌ์šฉํ•œ๋‹ค. javascript์˜ ๋Œ€ํ‘œ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” react์ด๋‹ค.

๐Ÿค” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋น„๊ต

โœ”๏ธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด๋Š” Flow(ํ๋ฆ„)์— ๋Œ€ํ•œ ์ œ์–ด ๊ถŒํ•œ์ด ์–ด๋””์— ์žˆ๋Š๋ƒ์— ์žˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ฅ๊ณ  ์žˆ์œผ๋ฉฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ๋ฆ„์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๊ฐ€์ ธ๋‹ค ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค.



2. Django์˜ MTV ํŒจํ„ด

๐Ÿค” Django MTV pattern

โœ”๏ธ 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์˜ ๋กœ์ง ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํด๋ผ์–ธํŠธ๋กœ ์‘๋‹ต๋œ๋‹ค.



3. ์›น์‚ฌ์ดํŠธ์˜ ํ๋ฆ„๊ณผ Django์˜ ์ฒ ํ•™

๐Ÿค” ์›น์‚ฌ์ดํŠธ์˜ ํ๋ฆ„

โœ”๏ธ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์„œ๋ฒ„์— request๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด, URLconf๋ฅผ ์ด์šฉํ•˜์—ฌ URL์„ ํŒŒ์‹ฑํ•œ๋‹ค. ์ด ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น URL์ด ํ˜ธ์ถœํ•  View์˜ ๋กœ์ง์„ ๊ฒฐ์ •ํ•œ๋‹ค.

โœ”๏ธ View๋Š” ์ž์‹ ์˜ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด Model๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค.

โœ”๏ธ ์ด ๋กœ์ง์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, Template๊ณผ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.

โœ”๏ธ ํด๋ผ์ด์–ธํŠธ๋Š” ์ด response๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ํ™”๋ฉด์— ์ตœ์ข…์ ์ธ ๊ฒฐ๊ณผ๋ฌผ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

profile
Keep Going, Keep Coding!

0๊ฐœ์˜ ๋Œ“๊ธ€