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
๐ง ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ง๋๋ ๋ช ๋ น๊ณผ ์ ์ฉํ๋ ๋ช ๋ น์ด ๋ถ๋ฆฌ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ปค๋ฐํ๊ณ ์ฑ๊ณผ ํจ๊ป ์ถ์ํ ์ ์๋๋ก ํ๊ธฐ ์ํด์์ด๋ค.