์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

Vue-Django-Bootstrap ๋š๋”ฑ ๋ธ”๋กœ๊ทธ

์ธ๊ธฐ 3์ด์‚ฌ (Vue + Django + Bootstrap) ๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ์‰ฌ์šฐ๋ฉด์„œ๋„ ๋ฉ‹์ง„ ๋‚˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜•์€ ๊ธฐ๋ณธ, ์Šค๋งˆํŠธํฐ์œผ๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[์›น ๊ฐœ๋ฐœ, ํ’€์Šคํƒ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • Django๋ฅผ ํ™œ์šฉํ•œ ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • jQuery๋ฅผ ๋Œ€์‹ ํ•˜๋Š” Vue.js ํ™œ์šฉ

  • Bootstrap ๋ฌด๋ฃŒ ํ…Œ๋งˆ/ํ…œํ”Œ๋ฆฟ ํ™œ์šฉ

๋‚ด ์†์œผ๋กœ ๋š๋”ฑ, ๋‚˜๋งŒ์˜ ๋ธ”๋กœ๊ทธ ๐Ÿ 
๋ทฐ + ์žฅ๊ณ  + ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์›น ๊ฐœ๋ฐœ!

์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ด๋™ํ•˜๊ณ , ๋Œ“๊ธ€์„ ๋‚จ๊ธฐ๊ณ , ํŽ˜์ด์ง€๋„ค์ด์…˜์€ ์ง์ ‘ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋กค์— ๋”ฐ๋ผ ๋ฉ”๋‰ด๊ฐ€ ๋ฐ”๋€Œ๋Š” scrollspy UI๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‰ฝ๊ณ  ๋น ๋ฅด๋ฉด์„œ๋„
๋ฉ‹์ง„ ์›น ๊ฐœ๋ฐœ
?

์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ UI๋Š” ์ ์  ํ™”๋ คํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋•Œ๋ฌธ์— ์ดˆ๋ณด์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๊ณ ๋ฏผํ•˜๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค. โ€˜๋‚˜๋„ ๋ฉ‹์žˆ๋Š” ์›น์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?โ€™ ํ•˜๊ณ ์š”.

์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ œ ๋‹ต์„ ๋ง์”€๋“œ๋ฆฝ๋‹ˆ๋‹ค.
๋ฐ”๋กœ Vue.js + Django + Bootstrap ์œผ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํ•˜๋‚˜, Vue์™€ Django๋ฅผ ์—ฐ๋™ํ•ด ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘˜, UI๋กœ๋Š” Bootstrap์—์„œ ์ง€์›ํ•˜๋Š” ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์„ธ ๊ฐ€์ง€ ๋ชจ๋‘ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ์‰ฝ๋‹ค๊ณ  ์–˜๊ธฐํ•˜๋Š” ์ธ๊ธฐ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. 
์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” ๋ฉ‹์ง„ ๋ธ”๋กœ๊ทธ ์›น ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ์—ฐ๋™ํ•˜๋Š” ์›น ๊ฐœ๋ฐœ์˜ ์›๋ฆฌ ๋ฐ ํ•ต์‹ฌ ๊ธฐ์ˆ ์„ ํ•™์Šตํ•ด ๋ณด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ•จ๊ป˜ ์‚ดํŽด๋ณด์‹ค๊นŒ์š”?


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

์„ ์ˆ˜ ์ง€์‹์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

  • Vue.js ๋ฐ Django ๊ธฐ๋ณธ ์ง€์‹์ด ์žˆ๋Š” ๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

 

์‰ฝ๊ณ  ๋น ๋ฅด๋ฉด์„œ๋„ 
๋ฉ‹์ง„ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ 
ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ 
ํ…Œ๋งˆ๋ฅผ ํ™œ์šฉํ•ด 
๋ฉ‹์ง„ UI๋ฅผ ๋งŒ๋“ค๊ณ ํ”ˆ ๋ถ„

๊ธฐ์ˆ  ํŠธ๋ Œ๋“œ์ธ 
ํ”„๋ก ํŠธ์—”๋“œ/๋ฐฑ์—”๋“œ๋ฅผ 
์—ฐ๋™ํ•˜๊ณ  ์‹ถ์€ ๋ถ„ 

ํ˜น์‹œ, ์ด๋Ÿฐ ๊ณ ๋ฏผ ํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”?

  • Django ๋ฐ Vue.js์˜ ๊ธฐ์ดˆ์ ์ธ ๊ธฐ๋Šฅ์„ ์•Œ๊ณ  ์žˆ๋Š” ๋ถ„๋“ค์ด ์ˆ˜๊ฐ•ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

ํŠœํ† ๋ฆฌ์–ผ ์ •๋„๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, 
์Šค์Šค๋กœ ํ•  ๋•Œ๋Š” ๋ง‰ํž ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, 
UI๊ฐ€ ๋งˆ์Œ์— ์•ˆ ๋“ญ๋‹ˆ๋‹ค.

Django๋Š” ์“ธ ์ค„ ์•Œ์ง€๋งŒ, ํ”„๋ก ํŠธ๋กœ 
์ตœ์‹  ๊ธฐ์ˆ ์ธ Vue.js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Vue.js๋Š” ์“ธ ์ค„ ์•Œ์ง€๋งŒ, ์„œ๋ฒ„ ๊ธฐ์ˆ ๋กœ 
Django๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • Django๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ž๊พธ ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ณ  ๋ง‰ํž ๋•Œ๊ฐ€ ์žˆ์–ด์š”.
    ๐Ÿ‘‰ Django(์žฅ๊ณ )๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ฐœ๋ฐœ์ž๋ฅผ ํŽธํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋งŽ์€ ๋ฐ˜๋ฉด, ๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ž˜ ํŒŒ์•…ํ•˜๊ณ  ์žˆ์–ด์•ผ ์—๋Ÿฌ์— ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์žฅ๊ณ  ๋„ํ๋จผํŠธ ์ฝ๋Š” ๋ฒ•์„ ์•Œ๋ ค์ฃผ๊ณ , ์ฃผ์š” ๋‚ด์šฉ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€๊ธˆ๋ณด๋‹ค ๋ฉ‹์ง„ UI๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์š”.
    ๐Ÿ‘‰ ๋ฉ‹์ง„ UI๋Š” ๋ˆ„๊ตฌ๋‚˜ ์›ํ•˜์ง€๋งŒ, ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ ๊ณผ ๋””์ž์ธ ๊ฐ๊ฐ์ด ํ•„์š”ํ•œ ๋ถ„์•ผ๋ผ ๋ณ„๋„ ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜์—์„œ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ Bootstrap(๋ถ€ํŠธ์ŠคํŠธ๋žฉ) ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€๊ฐ€ ๋งŒ๋“  ๋ฉ‹์ง„ UI ์ด๋ฉด์„œ๋„, ์ดˆ๊ธ‰์ž๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์ข‹์•„์š”/๋‹จ์–ด ์ถ”์ฒœ ๋“ฑ Async/Interactiveํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์š”.
    ๐Ÿ‘‰ ์›น ํ”„๋กœ๊ทธ๋žจ์—์„œ Async/Interactive ๊ธฐ๋Šฅ์€ ๊ฑฐ์˜ ํ•„์ˆ˜๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ „์—๋Š” jQuery(์ œ์ด์ฟผ๋ฆฌ)๋กœ ์ฝ”๋”ฉ์„ ํ–ˆ๋‹ค๋ฉด, ๋ณธ ๊ฐ•์˜์—์„œ๋Š” Vue.js(๋ทฐ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Vue๋Š” jQuery์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๊ณ , ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋œ ์ตœ์‹  ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ์Šค๋งˆํŠธํฐ์—์„œ๋„ ๋™์ž‘ํ•˜๋Š” ์›น ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์š”.
    ๐Ÿ‘‰ ๋ณธ ๊ฐ•์˜์—์„œ ํ™œ์šฉํ•˜๋Š” Start Bootstrap ํ…œํ”Œ๋ฆฟ์€ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐ˜์‘ํ˜• ๋™์ž‘์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณ„๋„์˜ ์ฝ”๋”ฉ ์—†์ด PC์™€ ์Šค๋งˆํŠธํฐ ์–‘์ชฝ์—์„œ ๋ชจ๋‘ ๋™์ž‘ํ•˜๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜๊ฐ€ ํŠน๋ณ„ํ•œ ์ด์œ ๋ฅผ 
์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚˜๋ฉด!

  • Vue-Django๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•œ, axios/JsonResponse ์‚ฌ์šฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • jQuery๋กœ ๋งŒ๋“ค๋˜ ๊ธฐ๋Šฅ์„, ์ด์ œ๋Š” ์ตœ์‹  ๊ธฐ์ˆ ์ธ Vue๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • Start Bootstrap ํ…Œ๋งˆ/ํ…œํ”Œ๋ฆฟ ๋“ฑ์„ ์Šค์Šค๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ์žฅ์ ์ด ๋งŽ๋‹ค๋Š” Django์˜ ํด๋ž˜์Šคํ˜• ๋ทฐ๋ฅผ ํ™•์‹คํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‘์šฉ๊นŒ์ง€ ์ƒ๊ฐํ•œ ์›น ๊ฐœ๋ฐœ ํ•™์Šต ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ โ€˜์›น ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„๊ฐ„๋‹คโ€™ โ€˜์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹คโ€™๋Š” ์ˆ˜์ค€์„ ๋›ฐ์–ด๋„˜์–ด, Django์˜ ๋™์ž‘ ์›๋ฆฌ ๋˜๋Š” ๋ฐฐ๊ฒฝ ์ง€์‹์„ ์ „๋‹ฌํ•˜๊ณ ์ž ๋…ธ๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ํ•˜๋‚˜๋ฅผ ๋ฐฐ์šฐ๋”๋ผ๋„ ์—ด ๊ฐœ๋กœ ์‘์šฉํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ์š”.

๋˜ํ•œ ์ฃผ ๋‚ด์šฉ์€ ์ดˆ๊ธ‰ ๊ธฐ๋Šฅ์— ๋งž์ถ”์—ˆ์ง€๋งŒ, โ–ฒPagination โ–ฒJS๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ โ–ฒprefetch-related ๋“ฑ์˜ ์ค‘๊ธ‰ ๊ธฐ๋Šฅ๋„ ํฌํ•จํ•ด ์—ฌ๋Ÿฌ๋ถ„๊ป˜์„œ ์กฐ๊ธˆ ๋” ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ•์˜๋ฅผ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋์œผ๋กœ ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ PPT๋กœ ์ž‘์„ฑํ•˜์—ฌ ๋™์˜์ƒ์—์„œ ์„ค๋ช…ํ•จ์œผ๋กœ์จ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฐ•์˜์— ์‚ฌ์šฉ๋œ ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต์˜ Single Page Application ์—ฐ๋™๋ฐฉ์‹์— ๋น„ํ•ด, ๋ณธ ๊ฐ•์˜ ์žฅ์  ์ž…๋‹ˆ๋‹ค.

  • Vue-Django ์—ฐ๋™ ๋ฐฉ์‹์ด๋ฉด์„œ๋„, VueRouter/Vuex/DRF ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
  • Vue-Django ์—ฐ๋™ ๋ฐฉ์‹์ด๋ฉด์„œ๋„, Django ์˜ Admin ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Django ๋ฅผ API ์„œ๋ฒ„๋งŒ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํ…œํ”Œ๋ฆฟ ์ฒ˜๋ฆฌ๋„ ๋™์‹œ์— ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ํ•„์š”ํ•˜๋‹ค๋ฉด, ์žฅ๊ณ ์˜ ์ธ์ฆ ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Django Rest Framework ์ข‹์€๋ฐ, ์ž์ฃผ ๋ง‰ํžŒ๋‹ค๋ฉด ?

  • DRF ๋Š” ์ฒ˜์Œ์—๋Š” ์‰ฌ์›Œ ๋ณด์ด์ง€๋งŒ, ์‘์šฉํ• ๋ ค๋ฉด ์ž์ฃผ ๋ง‰ํžˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • DRF ์˜ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ฆˆ, ํด๋ž˜์Šค ์ƒ์†, ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ์ต์ˆ™์น˜ ์•Š์•„์„œ ์ผ ๊ฒ๋‹ˆ๋‹ค.
  • ๋ณธ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ๊ธฐ์ˆ ์„ ์ตํžˆ๊ณ , ๊ทธ ์ดํ›„์— ํ•„์š”ํ•˜๋ฉด DRF๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
  • DRF ์— ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ธฐ์ˆ ์€, ์—ญ์‹œ ํด๋ž˜์Šคํ˜•๋ทฐ(CBV) ์ด๊ธฐ ๋•Œ๋ฌธ ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ˆœ์„œ๋กœ
ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

Start Bootstrap ํ…Œ๋งˆ ํ™œ์šฉํ•˜๊ธฐ

๋ถ€ํŠธ์ŠคํŠธ๋žฉ์˜ ํ…Œ๋งˆ์™€ ํ…œํ”Œ๋ฆฟ์„ ๋‚ด๋ ค๋ฐ›๊ณ  ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ณ , Django์—์„œ ํ…Œ๋งˆ๋ฅผ ์ˆ˜์ •ํ•ด ๋ด…๋‹ˆ๋‹ค.

Django๋กœ Blog ์•ฑ ๊ฐœ๋ฐœ

Django๋กœ ๋ธ”๋กœ๊ทธ ์•ฑ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

Vue-Django API ๊ฐœ๋ฐœ

Django์— Vue.js๋ฅผ ์—ฐ๋™ํ•˜๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ , API๋ฅผ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ข… ํ™•์žฅ ๊ธฐ๋Šฅ

ํŽ˜์ด์ง€๋„ค์ด์…˜, JS๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ, CSRF ํ† ํฐ ๊ธฐ๋Šฅ ๋“ฑ ๊ฐ์ข… ํ™•์žฅ ๊ธฐ๋Šฅ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

DB Query ์„ฑ๋Šฅ ๊ฐœ์„ 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋งˆํŠธํฐ์—์„œ ๋ณด๊ธฐ

๋ฐ์Šคํฌํ†ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ ๋“ฑ ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค์—์„œ๋„ ํ™”๋ฉด์„ ์•Œ๋งž๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ˜์‘ํ˜• ์›น ๊ธฐ์ˆ ์„ ํ•™์Šตํ•ด ๋ด…๋‹ˆ๋‹ค.


์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ์„ 
ํ™•์ธํ•ด๋ณด์„ธ์š”.

Q. ํŒŒ์ด์ฌ-์žฅ๊ณ ๋Š” ์ฒ˜์Œ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„๊นŒ์š”?

์žฅ๊ณ  ํ•˜๋‚˜๋กœ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ณธ ๊ฒฝํ—˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„์— Vue๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ๋ณธ ๊ฐ•์˜์™€ ๊ฐ™์€ ํ•œ๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ Vue-Django ์—ฐ๋™ ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋žจ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Q. ๋ทฐ๋ฅผ ๊ผญ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”? ์žฅ๊ณ ๋งŒ์œผ๋กœ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์•ˆ ๋˜๋‚˜์š”?

๋ฌผ๋ก  ์žฅ๊ณ ๋งŒ์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด UI๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฉ๋‹ˆ๋‹ค. UI๋Š” ์„œ๋ฒ„ ์ชฝ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒŒ ํ›จ์”ฌ ํšจ์œจ์ ์ด์ง€์š”. ๋ณธ ๊ฐ•์˜์—์„œ๋Š” jQuery ์ˆ˜์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๊ฐ•์˜๋ฅผ ๋งˆ์น˜๊ณ  ์ข€ ๋” ๊ณต๋ถ€ํ•˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ UI ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ตฌํ˜„๋„ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Q. ๋ทฐ ๋Œ€์‹  ๋ฆฌ์•กํŠธ(React)๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜๋‚˜์š”?

๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๋™๊ณผ ์žฅ๊ณ  ์ชฝ ์ฝ”๋“œ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ ์ฝ”๋“œ๋งŒ ๋ฆฌ์•กํŠธ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ทฐ์™€ ๋ฆฌ์•กํŠธ ๋‘˜ ๋‹ค ์ข‹์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ ์ž์‹ ์˜ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋ณธ ๊ฐ•์˜์™€ ๊ฐ™์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š” HTML ํŒŒ์ผ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ทฐ๊ฐ€ ๋ฆฌ์•กํŠธ ๋Œ€๋น„ ํ›จ์”ฌ ์œ ๋ฆฌํ•˜๋‹ค๋Š” ์ ์€ ๊ณ ๋ ค ๋ฐ”๋ž๋‹ˆ๋‹ค.

Q. ์‰ฝ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์–ด๋–ค ์ ์ด ์‰ฌ์šด ๊ฑด๊ฐ€์š”?

๋ทฐ-์žฅ๊ณ ๋ฅผ ์—ฐ๋™ํ•  ๋•Œ, ๋งŽ์€ ๊ฒฝ์šฐ Vue Router, Vuex, DRF ๋“ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ๊ณต๋ถ€๋Ÿ‰์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ธํ„ฐ๋„ท์— ์žˆ๋Š” ๋ถ€ํŠธ์ŠคํŠธ๋žฉ(Bootstrap) ํ…Œ๋งˆ๋ฅผ ํ™œ์šฉํ•˜๋ฏ€๋กœ, ๋น ๋ฅด๊ฒŒ ์‰ฝ๊ณ  ๋ฉ‹์ง€๊ฒŒ UI๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q. ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜์™€๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”?

๋‚œ์ด๋„๋Š” ์ €์˜ ์ธํ”„๋Ÿฐ ๊ฐ•์˜ (Vue-Django ์—ฐ๋™) ๊ธฐ๋ณธํŽธ๊ณผ ์‹ค์ „ํŽธ ์ค‘๊ฐ„ ์ •๋„์ž…๋‹ˆ๋‹ค.

์‹ค์ „ํŽธ๊ณผ ๋น„๊ตํ•˜๋ฉด ๋ธ”๋กœ๊ทธ ์•ฑ์€ ๋™์ผํ•˜์ง€๋งŒ, ์ข‹์•„์š” ๋น„๋™๊ธฐ(Async) ๊ธฐ๋Šฅ๊ณผ ๋Œ“๊ธ€ ํผ ์ฒ˜๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ , ํŽ˜์ด์ง€๋„ค์ด์…˜(Pagination) ๊ธฐ๋Šฅ์€ ์ง์ ‘ ๋‚ ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ Vuetify ๋Œ€์‹  Bootstrap์„ ์‚ฌ์šฉํ–ˆ๊ณ , ํŠนํžˆ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ Start Bootstrap ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์›€์œผ๋กœ์จ ๋‹ค์–‘ํ•œ ํ…Œ๋งˆ๋“ค์„ ์Šค์Šค๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


์ง€์‹๊ณต์œ ์ž์˜
๋‹ค๋ฅธ ๊ฐ•์˜๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ์‰ฝ๊ณ  ๋น ๋ฅด๋ฉด์„œ๋„ ๋ฉ‹์ง„ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

  • ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ํ…Œ๋งˆ๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ๋ฉ‹์ง„ UI๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋ถ„

  • ๊ธฐ์ˆ  ํŠธ๋ Œ๋“œ์ธ Front/Backend๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Django ํŠœํ† ๋ฆฌ์–ผ ๋ฐ ํด๋ž˜์Šคํ˜•๋ทฐ๋Š” ์ฝ”๋”ฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Vue.js ๊ธฐ๋ณธ ๋””๋ ‰ํ‹ฐ๋ธŒ(v-for, v-if ๋“ฑ)๋Š” ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”
๊น€์„ํ›ˆ์ž…๋‹ˆ๋‹ค.

2,071

๋ช…

์ˆ˜๊ฐ•์ƒ

152

๊ฐœ

์ˆ˜๊ฐ•ํ‰

224

๊ฐœ

๋‹ต๋ณ€

4.6

์ 

๊ฐ•์˜ ํ‰์ 

5

๊ฐœ

๊ฐ•์˜

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์€ C ์–ธ์–ด๋กœ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ, ์ž๋ฐ”๋ฅผ ๊ฑฐ์ณ ์ตœ๊ทผ์—๋Š” ์ฃผ๋กœ ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.
KT ucloud ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•˜์—ฌ, ์ž๋ฐ”๋กœ ๊ณ ๊ฐ์˜ ํด๋”/ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์ •๋ณด ์ฒ˜๋ฆฌ ์—”์ง„์„, ํŒŒ์ด์ฌ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ํ‘ธ์‹œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค.

๋˜ํ•œ KT์ธํ„ฐ๋„ท ํšŒ์„ ์˜ ์†๋„ ์ธก์ • ํ”„๋กœ๊ทธ๋žจ, ๋„คํŠธ์›Œํฌ ์žฅ๋น„์— ๋Œ€ํ•œ ์šด์šฉ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ, ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ํŠธ๋ž˜ํ”ฝ ๋ฐ์ดํ„ฐ ๋ถ„์„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•œ ๋ฐ” ์žˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ํŒŒ์ด์ฌ์˜ ๋งค๋ ฅ์— ํ‘น ๋น ์ ธ ๋˜๋„๋ก์ด๋ฉด ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”๋”ฉํ•˜๊ธฐ๋ฅผ ์ฆ๊ฒจํ•˜๊ณ  ์žˆ๋‹ค.

๊ทธ ์ผํ™˜์œผ๋กœ ์š”์ฆ˜์€ Django๋ฅผ ํ™œ์šฉํ•œ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ, Django Rest Framework๋ฅผ ํ™œ์šฉํ•œ JSON ์—ฐ๋™, Pandas๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„, Scikit-learn/Tensorflow/ChatGPT ๋ฅผ ํ™œ์šฉํ•œ AI ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ ๋“ฑ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํŒŒ์ด์ฌ์˜ ํ™œ์šฉ๋„๋ฅผ ๋„“ํ˜€๊ฐ€๊ณ  ์žˆ๋‹ค.

< ์ €์„œ >

1. Django ๋กœ  ๋ฐฐ์šฐ๋Š” ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ (์ดˆํŒ, ํ•œ๋น›๋ฏธ๋””์–ด, 2015.4์›”)
2. Django ๋ฅผ ํ™œ์šฉํ•œ ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์‹ค์ „ํŽธ (์ดˆํŒ, ํ•œ๋น›๋ฏธ๋””์–ด, 2016. 7์›”)
3. Django ๋กœ  ๋ฐฐ์šฐ๋Š” ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ (๊ฐœ์ •ํŒ, ํ•œ๋น›๋ฏธ๋””์–ด, 2018. 8์›”)
4. Django ๋ฅผ ํ™œ์šฉํ•œ ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์‹ค์ „ํŽธ (๊ฐœ์ •ํŒ, ํ•œ๋น›๋ฏธ๋””์–ด, 2019. 11์›”)
5. Django ๋กœ  ๋ฐฐ์šฐ๋Š” ํŒŒ์ด์ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3ํŒ, ํ•œ๋น›๋ฏธ๋””์–ด, 2022. 11์›”)

 

< ๋™์˜์ƒ ๊ฐ•์˜ >

1. Vue.js - Django ์—ฐ๋™ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ (์ธํ”„๋Ÿฐ ๋™์˜์ƒ, 2019.4์›”)
2. Vue.js - Django ์—ฐ๋™ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์‹ค์ „ํŽธ (์ธํ”„๋Ÿฐ ๋™์˜์ƒ, 2020.9์›”)
3. Vue - Django - Bootstrap ๋š๋”ฑ ๋ธ”๋กœ๊ทธ (์ธํ”„๋Ÿฐ ๋™์˜์ƒ, 2021. 9์›”)
4. Django REST framework ํ•ต์‹ฌ์‚ฌํ•ญ (์ธํ”„๋Ÿฐ ๋™์˜์ƒ, 2022.2์›”)
5. AI Web Programming (์ธํ”„๋Ÿฐ ๋™์˜์ƒ, 2024.2์›”)

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

50๊ฐœ โˆ™ (5์‹œ๊ฐ„ 44๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!