๐ŸŒฑ ์›น/Django

Django ํŠœํ† ๋ฆฌ์–ผ (2) - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฏธ์ธ์ฃผ 2023. 2. 19. 19:21
Django ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์…‹์—…

๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋Š” SQLite๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • SQLite ์ง„์ž…
# db.sqlite3 ๊ฐ€ ์žˆ๋Š” ์œ„์น˜์—์„œ
sqlite3 db.sqlite3

 

๋ชจ๋ธ ๋งŒ๋“ค๊ธฐ

๋ชจ๋ธ์ด๋ž€, ๋ถ€๊ฐ€์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ!

 

1. polls/models.py์—์„œ ๋ชจ๋ธ ์ž‘์„ฑ

Question๊ณผ Choice ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค.

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

๋ชจ๋ธ ํ™œ์„ฑํ™”

๋ชจ๋ธ์„ ํ†ตํ•ด ์žฅ๊ณ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์„ ํ•œ๋‹ค.

  • ์ด ์•ฑ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ƒ์„ฑ (CREATE TABLE statements)
  • Question์™€ Choice ๊ฐ์ฒด์— ๋Œ€ํ•œ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ API ์ƒ์„ฑ

 

2. mysite/settings.py ์ˆ˜์ •

ํ”„๋กœ์ ํŠธ์— polls ์•ฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์•ผ ํ•œ๋‹ค.

INSTALLED_APPS์— PollsConfig ํด๋ž˜์Šค ์ถ”๊ฐ€

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

 

3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ƒ์„ฑ

๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์žฅ๊ณ ์— ์•Œ๋ฆฌ๋Š” ๊ฒƒ

python manage.py makemigrations

๐Ÿ’ก ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด๋ž€? Migrations

์žฅ๊ณ ์—์„œ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ์ „ํŒŒํ•˜๋Š” ๋ฐฉ๋ฒ•

์žฅ๊ณ ๋Š” ORM์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ DB ์Šคํ‚ค๋งˆ๋ฅผ git์ฒ˜๋Ÿผ ๋ฒ„์ „ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

ํ•˜๋‚˜์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒŒ์ผ์€ ํ•ด๋‹น ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ƒ์„ฑ๋œ ์‹œ์ ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง

 

4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ

๋ชจ๋ธ๊ณผ ๊ด€๋ จ๋œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.

python manage.py migrate

 

๐Ÿง ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น๊ณผ ์ ์šฉํ•˜๋Š” ๋ช…๋ น์ด ๋ถ„๋ฆฌ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ปค๋ฐ‹ํ•˜๊ณ  ์•ฑ๊ณผ ํ•จ๊ป˜ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.