๐Ÿ˜ฏ Make first App in Django - 1

Min-Ho Leeยท2020๋…„ 7์›” 3์ผ
1

Learn Django

๋ชฉ๋ก ๋ณด๊ธฐ
1/13
post-thumbnail

Friday_July_3
.
.
.
์šฐ์„  ๋ง ๊ทธ๋Œ€๋กœ ์žฅ๊ณ ์—์„œ ์ฒซ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ธ€์ด๋‹ค.

์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ํ•˜๋Š” Polls ๋ผ๋Š” ์•ฑ์„ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.
(์ฐธ๊ณ ๋กœ Miniconda๋ผ๋Š” ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ Django๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์ง„ํ–‰ํ•˜์˜€๋‹ค.)

1๏ธโƒฃ ํ”„๋กœ์ ํŠธ(project) ๋งŒ๋“ค๊ธฐ

์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ, App์ด๋ž€ ์‰ฝ๊ฒŒ ๋งํ•ด '๊ธฐ๋Šฅ'์ด๋‹ค. ๋‚˜๋Š” ์ง€๊ธˆ Django๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด
์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ํ•˜๋Š” Polls๋ผ๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ํ•˜๋‚˜์˜ App๋งŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋‹ด์„ ํ”„๋กœ์ ํŠธ(๋””๋ ‰ํ† ๋ฆฌ)๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.

mysite๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค๋„๋ก ํ•˜๊ฒ ๋‹ค.

django-admin startproject <์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„>

๋ผ๊ณ  ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ ํ•  ๊ฒƒ์€, ๊ผญ Django๊ฐ€ ์„ค์น˜๋œ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰์„ ํ•ด์•ผ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
(Django๊ฐ€ ์„ค์น˜๋œ ๋‚ด ๊ฐ€์ƒํ™˜๊ฒฝ์€ project์ด๋‹ค.)

๋ช…๋ น์–ด๋ฅผ ์ž˜ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด ๋‚ด๊ฐ€ ์ง€์€ ์ด๋ฆ„์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ์ƒ๊ฒผ์„๊ฑฐ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๊ทธ์ € ๋‚ด๊ฐ€ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ์„ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ(๋””๋ ‰ํ† ๋ฆฌ) ํŒŒ์ผ์ด๊ณ  ๋ชจ๋“  ์ง„ํ–‰์€ ๊ทธ ์•ˆ์—์„œ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ์ œ๋Œ€๋กœ ๋งŒ๋“ค์—ˆ๊ณ  ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด,
ํ˜„์žฌ ๊ทธ ํ”„๋กœ์ ํŠธ(๋””๋ ‰ํ† ๋ฆฌ)์•ˆ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด
manage.py ํŒŒ์ผ๊ณผ mysite๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

  1. mysite๋ผ๋Š” ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ
  2. mysite๋ผ๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž˜ ๋งŒ๋“ค์–ด์กŒ์Œ
  3. ๊ทธ ํ”„๋กœ์ ํŠธ(๋””๋ ‰ํ† ๋ฆฌ)๋กœ ์ด๋™์„ ํ•จ
  4. ๊ทธ ์•ˆ์—๋Š” manage.py๋ผ๋Š” ํŒŒ์ผ๊ณผ mysite๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ๋” ์žˆ์Œ
  5. ํ˜„์žฌ ์œ„์น˜ ์•„๋ž˜์˜ ๋‚ด์šฉ๋“ค์„ ๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

mysite๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ 2๊ฐœ๋ผ๊ณ  ํ–‡๊ฐˆ๋ฆฌ๋ฉด ์•ˆ๋œ๋‹ค.
ํ•ญ์ƒ manage.py << ์ด ํŒŒ์ผ์ด ์žˆ๋Š” ๊ณณ์ด ์ œ์ผ ๊ผญ๋Œ€๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๋ถˆํ™•์‹คํ•œ ์ •๋ณด๋ฅผ ์ฃผ๋ฉด ์•ˆ๋˜๋‹ˆ, ๊ฐ ํŒŒ์ผ๋“ค์˜ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ข€ ๋” ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์ ์–ด์•ผ๊ฒ ๋‹ค.
์•„์ง ๋‚˜๋„ ์ฒ˜์Œ์ด๋ผ ๋งŽ์ด ๋ถ€์กฑํ•˜๋‹ค. (์—ด์‹ฌํžˆ ํ• ๊ฒŒ์š” ใ… )

์ผ๋‹จ ์ด๋ ‡๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ๋งŒ ํ•ด๋„ ์„œ๋ฒ„๋ฅผ ํ™œ์„ฑํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
์•„๊นŒ ์ „์— ์ค‘์š”ํ•˜๋‹คํ•œ manage.py ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ณณ(์ € ๊ทธ๋ฆผ์—์„œ ์ด๋™์„ ์•ˆํ–ˆ๋‹ค๋ฉด ๊ทธ ์œ„์น˜)์—์„œ
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

python manage.py runserver

์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์„œ๋ฒ„๊ฐ€ ํ™œ์„ฑํ™”๊ฐ€ ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์‹คํ–‰ํ•œ ์„œ๋ฒ„์˜ ์ฃผ์†Œ๊ฐ€ ์œ„์™€ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.
(๋นจ๊ฐ„์ƒ‰ ๊ธ€์”จ๋กœ ๋‚˜์˜ค๋Š” ๋ฌธ์žฅ๋“ค์€ ์•„์ง์€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋‚˜์ค‘์— ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.)

์œ„์— ๋นจ๊ฐ„ ์ค„์„ ์นœ ์ฃผ์†Œ๋กœ ์ ‘์†์„ ํ•˜๊ฒŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋กœ์ผ“์ด ์ถœ๋ฐœํ•˜๋Š” ๊ทธ๋ฆผ์˜ ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฌ๊ฒŒ ๋œ๋‹ค.
์ด๊ฒƒ์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฒซ ์„œ๋ฒ„์ธ ๊ฒƒ์ด๋‹ค.

2๏ธโƒฃ ์•ฑ(App) ๋งŒ๋“ค๊ธฐ, ๋“ฑ๋กํ•˜๊ธฐ

์ด์ œ ์›น์‚ฌ์ดํŠธ์— ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ํ•˜๋Š” polls ๋ผ๋Š” ์•ฑ(๊ธฐ๋Šฅ)์„ ๋„ฃ์œผ๋ ค๊ณ  ํ•œ๋‹ค.

๋‹ค์‹œ manage.py๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ ๊ฐ€์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ณ์ฃผ๋ฉด ๋œ๋‹ค.
(manage.py๋ฅผ ๊ณ„์† ๊ฐ•์กฐํ•˜๋Š” ์ด์œ ๋Š” ๊ฐ€๋”์‹ manage.py๊ฐ€ ์—†๋Š” ์œ„์น˜์—์„œ ์„œ๋ฒ„๋ฅผ ์—ด๊ฑฐ๋‚˜, ํ”„๋กœ์ ํŠธ๋‚˜ ์•ฑ์„ ๋งŒ๋“ค๋ฉด ์‹คํ–‰์ด ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

python manage.py startapp polls

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž˜ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๋์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ์—์„œ ๋‚ด๊ฐ€ polls ๋ผ๋Š” ์•ฑ์„ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค.

์–ด๋–ป๊ฒŒ ์•Œ๋ ค์ฃผ๋Š๋ƒ??

mysite๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์žˆ๋Š” settings.py์— ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ผ๋‹จ ์ด๋™์„ ํ•˜๊ณ  vi ํŽธ์ง‘๊ธฐ๋กœ settings.py ํŒŒ์ผ์„ ์—ฐํ›„
(์ฐธ๊ณ ๋กœ settings.py ํŒŒ์ผ์€, ๋ง ๊ทธ๋Œ€๋กœ ํ™˜๊ฒฝ์„ค์ •์„ ํ•ด์ฃผ๋Š” ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์‚ฌ์‹ค ์ €๋„ ์ž˜ ๋ชฐ๋ผ์„œ..ใ… )

INSTALLED_APPS ๋ผ๋Š” ๊ณณ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

'polls.apps.PollsConfig'

(๊ฒฝ๋กœ์ด๋‹ˆ ์ŠคํŠธ๋ง์œผ๋กœ ์ฃผ๋Š” ๊ฒƒ์„ ์žŠ์œผ๋ฉด ์•ˆ๋œ๋‹ค.)

apps ํ•˜์œ„์— ์žˆ๋Š” config ๋ชจ๋“ˆ์˜ ๋„ค์ด๋ฐ(naming)์€ ์•ฑ์ด๋ฆ„+'Config' ์ด๋ฉฐ, ์•ฑ์˜ ์ œ์ผ ์•ž ๊ธ€์ž๋งŒ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑ๋œ๋‹ค.

์—ฅโ“โ“โ“
๋‹ค์Œ์˜ ๊ฒฝ๋กœ๋กœ(apps.py) ๊ฐ€๋ณด์ž.

์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋‚ด๊ฐ€ ์ง€์€ '์•ฑ์ด๋ฆ„+Config' ๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ด ๋˜์–ด ์žˆ๋‹ค.
๋ฌผ๋ก  ๋‚˜๋„ ์•„์ง ๋ญ๊ฐ€ ๋ญํ•˜๋Š” ๋†ˆ์ธ์ง„ ์ž˜ ๋ชจ๋ฅด์ง€๋งŒ, mysite>settings.py ์—์„œ ๊ฒฝ๋กœ๋ฅผ ์ค€ ์นœ๊ตฌ๋Š”
์ด ์นœ๊ตฌ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ๊ทธ๋Ÿฐ ๋Š๋‚Œ์ ์ธ ๋Š๋‚Œ๋งŒ ๋“ค ๋ฟ.

์•ฑ ์ด๋ฆ„์ด polls ๊ฐ€ ์•„๋‹Œ this_is_polls ์™€ ๊ฐ™์ด ์ง€์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

๊ทธ๋Ÿฌ๋ฉด 'ThisIsPollsConfig'๊ฐ€ ๋œ๋‹ค.
(์ด๊ฑด ๊ฐ์ž ์‹ค์Šต์œผ๋กœ ์‹œ๋„ํ•ด๋ณด๊ณ  ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.)

์•„๋ฌดํŠผ ์ด์ œ Django๊ฐ€ polls ์•ฑ์ด ๋“ฑ๋ก๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

profile
๐Ÿ‡ Rabbit can take a rest, but ๐Ÿข turtle can't

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