๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python - Django Framework

[Django - Airbnb ํด๋ก  ์ฝ”๋”ฉ #2] Django Application ์ƒ์„ฑํ•˜๊ธฐ

by ์œ ์ง„์˜ 2021. 2. 17.

Django Install

pipenv install Django == '๋ฒ„์ „'

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” Django 2.2.5 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

Django Activate

1. django-admin startproject config
2. ์ตœ์ƒ์œ„ config ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์˜ ๋‚ด๋ถ€ config ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ manage.py์„ ๋ฐ”๊นฅ์œผ๋กœ ๋นผ๋‚ธ๋‹ค.

๋‚ด๋ถ€ config ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ตœ์ƒ์œ„ config ๋””๋ ‰ํ„ฐ๋ฆฌ ์™ธ๋ถ€๋กœ ๋นผ๋‚ด๋ ค๋ฉด ์ตœ์ƒ์œ„ config ๋””๋ ‰ํ† ๋ฆฌ๋ช…์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. 

config ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ manage.py๋ฅผ ๋นผ๋ƒˆ์œผ๋ฉด ์ตœ์ƒ์˜ config ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. 

 

Django Application ์ƒ์„ฑ

django-admin startapp ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ช… s

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ช…์€ ๋ฐ˜๋“œ์‹œ ๋ณต์ˆ˜ํ˜• ์ด์–ด์•ผ ํ•œ๋‹ค!!

Airbnb ํด๋ก  ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ rooms, users, reviews, reservations, lists, conversations ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๊ฐ๊ฐ ์ƒ์„ฑํ–ˆ๋‹ค.

๊ฐ๊ฐ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์œ„์™€ ๊ฐ™์€ python file๋“ค์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๋Š” Django์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•ด์ฃผ๋Š” ํŒŒ์ผ๋“ค์ด๋‹ค. ๊ฐ ํŒŒ์ผ๋“ค์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

- admin.py : admin ํŒจ๋„์„ ๋‹ด๋‹น

- models.py : ๋ฐ์ดํ„ฐ์˜ ๋ชจ๋ธ์„ ๋‹ด๋‹น

- app.py : config ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ settings.py์—์„œ์˜ INSTALLED_APPS ๋“ฑ๋ก ๋‹ด๋‹น

- views.py : View ํŒŒํŠธ ๋‹ด๋‹น

settings.py ์„ค์ • 

1. TIME_ZONE = "Asia/Seoul"
2. USE_TZ = False
3. INSTALLED_APPS = DJANGO_APPS + PROJECT_APPS + THIRD_PARTY_APPS

USE_TZ = True / False์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด USE_TZ = False๋ฉด timezone์€ ๋ชจ๋“  datetime๋“ค์„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  USE_TZ = True๋ฉด ํ…œํ”Œ๋ฆฟ์— datetime๋“ค์„ ํ‘œ์‹œํ•˜๊ณ  form์— ์ž…๋ ฅํ•œ ๋‚ ์งœ๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ True์ด๋ฉด template๊ณผ form์—์„œ๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ TIME_ZONE (๋‚˜๋จธ์ง€๋Š” Default Timezone => UTC ์ ์šฉ) ์ด ์ ์šฉ๋˜๊ณ  False์ด๋ฉด ๋ชจ๋“  ๊ณณ์—์„œ ์ง€์ •๋œ TIME_ZONE์ด ์ ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

INSTALLED_APPS์—๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ด๋•Œ, ํ•œ ๋ฒˆ์— ๋‹ค ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ถ„๋ฅ˜ํ•ด์„œ ๋“ฑ๋กํ•ด์คฌ๋‹ค. DJANGO_APPS์—๋Š” Django ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค, PROJECT_APPS์—๋Š” ๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค, THIRD_PARTY_APPS์—๋Š” ์™ธ๋ถ€ ๋ชจ๋“ˆ๋“ค์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๋‹ค. ์ฐธ๊ณ ์ ์œผ๋กœ PROJECT_APPS์—๋Š” ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ apps.py์— ์กด์žฌํ•˜๋Š” Config ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œํ•ด์ค˜์•ผ ๋“ฑ๋ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Django Framework์˜ ํŠน์ง•

1. ์ž์ฒด์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž์šฉ DB๋ฅผ ๊ฐ€์ง„๋‹ค. (sqlite3)
2. ์ž์ฒด์ ์œผ๋กœ Admin Panel์„ ๊ฐ€์ง„๋‹ค.
3. Python ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ SQL๋ฌธ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ DB์— ์ ‘๊ทผํ•œ๋‹ค.
4. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฏ€๋กœ Default๋กœ ์ƒ์„ฑ๋˜์–ด์žˆ๋Š” ํด๋”, ํŒŒ์ผ, ๋ณ€์ˆ˜๋ช…์„ ์‚ญ์ œ, ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
python manage.py createsuperuser

์œ„์˜ ๋ช…๋ น์–ด๋กœ ๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด๋‹น ๊ณ„์ •์œผ๋กœ Admin Panel์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ€ป ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์  โ€ป

ํ”„๋ ˆ์ž„์›Œํฌ: ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฃฐ์— ๋งž์ถ”์–ด ๋นŒ๋“œํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ํ”„๋ ˆ์ž„์›Œํฌ ์Šค์Šค๋กœ๊ฐ€ ์ฅ๊ณ  ์žˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์œ ๋กญ๊ฒŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋งŒ๋“ ๋‹ค.  

๋Œ“๊ธ€