์ด์ฐ ์ฅ๊ณ ์ฒ์ ๋๋ฌด ํ๋๋นใ ใ
์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์ด๋ด์ฉ ๋จผ์ ์ ๋ฆฌํด๋ณด์
1.ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
- ๋ง๋ค ํ๋ก์ ํธ์ ๊ตฌํํ ๊ธฐ๋ฅ์ ์๊ฐํ๊ธฐ
- ๊ธฐ๋ฅ์ ํ ์ฑ์ ๋ง๋ค๊ธฐ(user, tweet)
2. DB์ ์ฐ๊ฒฐํ๊ธฐ
- ์ฅ๊ณ ์คํ ํ db.sqlite3 ์์ฑํ์ธ
- ์ฌ์ฉ์ ๋ชจ๋ธ(user ์ฑ ์์ ) ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฃ๊ธฐ
3. ๊ด๋ฆฌ์ ๊ณ์ ๋ง๋ค๊ธฐ
- ํฐ๋ฏธ๋๋ก ๊ด๋ฆฌ์ ๊ณ์ ๋ง๋ค๊ธฐ
- ๊ด๋ฆฌ์๊ฐ ๊ด๋ฆฌํ UserModel์ admin๊ณ์ ์ ๋ฃ๊ธฐ
์๋์ ์์ธํ๊ฒ ์ ๋ฆฌํด๋ณด์!
ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
์ฐ๋ฆฌ๊ฐ ๋ง๋ค ํ๋ก์ ํธ๋ 'sns' ์ด๊ธฐ ๋๋ฌธ์
1. ์ฌ์ฉ์ ๊ด๋ฆฌ (ํ์๊ฐ์ / ๋ก๊ทธ์ธ / ๋ก๊ทธ์์)
2. ๊ธ์ฐ๊ธฐ
3. ์น๊ตฌ๋ง๋ค๊ธฐ
์ ๋์ ๊ธฐ๋ฅ์ ์๊ฐํ ์ ์๋ค.
์ฌ์ฉ์์ ๊ธ๋ก ๋๋์ด์ ํ๋ก์ ํธ์ ๊ธฐ๋ฅ์ ํ ์ ์๋ ์ฑ๋ค์ ๋ง๋ค์ด๋ณด์
1. ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ user, tweet ์ฑ์ ๋ง๋ค์ด๋ณด์
- user์ฑ - ์ฌ์ฉ์ ๊ด๋ฆฌ ( ํ์๊ฐ์ /๋ก๊ทธ์ธ/๋ก๊ทธ์์)์ ๋ด๋น
- tweet์ฑ - ๊ธ ๊ด๋ฆฌ( ๊ธ์ฐ๊ธฐ, ์ญ์ , ์์ , ๋๊ธ)์ ๋ด๋น
ํฐ๋ฏธ๋ ์ฐฝ์ ์๋ ์ฝ๋๋ฅผ ํ ์ค์ฉ ์ ๋ ฅํด์ฃผ์
$ django-admin startapp user
$ django-admin startapp tweet
์ด๋ ๊ฒ ์ข์ธก์ tweet, user ์ฑ์ด ๋ง๋ค์ด์ง๋ค.
2. ์ฅ๊ณ ๋ ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๊ณ ์์ํ ๋ ์ฅ๊ณ ํํ ์๋ ค์ฃผ์!
settings.py๋ Django๊ฐ ์๋ฒ๋ฅผ ์คํํ๋ฉด์ ์์์ผํ ์ ๋ณด๋ค์ ์ ์ด์ฃผ๋๋ฐ
์ ํ์๋ ๋ง์ ์ค์ ๋ค ์ค์ INSTALLED_APPS๋ฅผ ์ฐพ์์
์๋์ ๊ฐ์ด tweet, user๋ฅผ ์ถ๊ฐํด์ฃผ์.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tweet',
'user',
]
์ด๋ฌ๋ฉด ๋!
์ฅ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฐ๊ฒฐ์ด ๋์ด์๋์ง ํ์ธ์ ํ๊ณ
ORM์ ํ์ฉํด์ ์ฐ๋ฆฌ์ ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด์!
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐํ๊ธฐ
1. db.sqlite3 ์์ฑํ์ธํ๊ธฐ
settings.py์ DATABASES ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ์ฐ๋ํ๊ธฐ ์ํด
์ฅ๊ณ ๋ฅผ ์คํ์์ผ์ฃผ์
ํ์๊ธฐ์ db.sqlite3
์๋๊ฑฐ ํ์ธํ์
ํ์ด์ฐธ์ ์ด๋ฐ์ ๋ฐ ์ค์ ์ ํด์ฃผ๋๋ฐ
vscode๋ ์ต์คํ ์ sqlite.db ์ค์นํด์ ๋ฐ๋ก ์ค์ ์ํด์ค๋ ๋๋ค!
2. User Model ๋ง๋ค๊ธฐ
ORM์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋์ ๊ฐ์ฒด ๋ฉ์ด๋ฆฌ๋ก ๋ณด๊ณ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ SQL์ธ์ด๊ฐ ์๋ ํด๋์ค๋ก ์ฝ๊ฒ ํํํ ์ ์๊ฒ ํด์ค๋ค!
ํด๋์ค๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํํ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํด๋ณด์!
์ฌ์ฉ์๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด์
- user model์ ๋ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ, ์ํ๋ฉ์ธ์ง, ์์ฑ์ผ์ ๋ฃ์ด๋ณด์
ํ์๊ธฐ user -> models.py๋ฅผ ์ด์ด์ ์๋์ฝ๋ ๋ถ์ฌ๋ฃ์!
#user/models.py
from django.db import models
# Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user"
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
UserModel ์ด๋ผ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์
์ด๋ฆ, ๋น๋ฐ๋ฒํธ, bio, ์์ฑ์ผ, ์์ ์ผ์ ๋ฃ์๋ค!
UseModel ๋ฐ์ Meta๋ผ๋ ํด๋์ค๊ฐ ์๋๋ฐ
์ด๊ฑด db์ ์ ๋ณด๋ฅผ ๋ฃ์ด์ฃผ๋ ์ญํ ์ ํ๋ค!
django ๋ชจ๋ธ ํ๋์ ์ข ๋ฅ
๋ฌธ์์ด : CharField, TextField
๋ ์ง/์๊ฐ: DateTimeField, DateField, TimeField
์ซ์ : IntegerField, FloatField
๋ค๋ฅธ ํ
์ด๋ธ๊ณผ ์ฐ๊ด์ ์ง์ด ์ค ๋ : ForeignKey
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฃ๊ธฐ!
ํฐ๋ฏธ๋ ์ฐฝ์ ์ ๋ ฅํด์ค๋ค
myspartasns์ ์์นํด ์๋์ง ํ์ธํ๊ณ ์๋์ ๋ช ๋ น์ด๋ฅผ ํ์ค์ฉ ์ ๋ ฅํด์ฃผ์!
์คํ ์๋๊ฒ ์กฐ์ฌํ์^_^
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ ์๋ ค์ฃผ๋ ๋ช ๋ น์ด
python manage.py makemigrations
- ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฉ์์ผ์ฃผ๋ ๋ช ๋ น์ด
python manage.py migrate
๊ทธ๋ฌ๋ฉด ์ ๋ค์ด๊ฐ๊ฑธ ํ์ธํ ์ ์๋นใ .ใ
๊ด๋ฆฌ์๊ณ์ ๋ง๋ค๊ธฐ
admin
๊ด๋ฆฌ์ํ์ด์ง๋ฅผ ์ง์ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ!
์ฐ๊ฒฐ๋์ด ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ์์ ๋ ํ ์ ์๊ณ ์ถ๊ฐ, ์ญ์ ๋ ๊ฐ๋ฅํ๋ค!
์ฉ๋ค!
ํฐ๋ฏธ๋์ ์๋ ์ฝ๋ ์ ๋ ฅํด์ ์๋ฒ ์คํ์ํค๊ณ ์๋ฒ๋ฅผ ๋๋ฆฐ๋ค์
python manage.py runserver
http://127.0.0.1:8000/๋ก ๋ค์ด๊ฐ๋ฉด
์๋ฐ ํ๋ฉด์ด ๋จ๋๋ฐ
http://127.0.0.1:8000/admin ์ ์ ๋ ฅํ๊ณ ๋ค์ด๊ฐ๋ฉด
์๋ฐ ํ๋ฉด์ด ๋ฌ๋ค!!
์ ๋ง ์ ๊ธฐํ ์ผ์ด๋ค.
๋ฐ๋ก ๋ง๋ ๊ฒ ์๋๋ฐ ์ด๋ ๊ฒ ์์์ ๋ค ๋ง๋ค์ด์ ธ์๋ค๋... ๋ด ์ฅ๊ณ ๋ ์์ฃผ ์ ๋์๊ฐ๊ณ ์๊ตฐ!!
์ผ๋จ ctrl + c๋ก ๋์์ฃผ๊ณ
1. ๊ด๋ฆฌ์ ๊ณ์ ๋ง๋ค๊ธฐ
ํฐ๋ฏธ๋ ์ฐฝ์ ์๋ ์ฝ๋๋ฅผ ์ ๋ ฅํ์
python manage.py createsuperuser
๊ทธ๋ฌ๋ฉด username, email, password๋ฅผ ์ ๋ ฅํ๋ผ๊ณ ๋์จ๋ค!
์ฌ๊ธฐ์ password๋ฅผ ๋๋ฌด ๋์ถฉ ํ๋๋ ์ ํจ์ฑ๊ฒ์ฌ ๋ฌด์ํ๊ณ ๊ฑ ๋ง๋ค๊ฑฐ๋๊ณ ๋ฌผ์ด๋ณธ๋ค..ํํ
y ํ๋๊น ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋๋ค! ์ฅ๊ณ ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ง๋ ๊ฒ!!
๋ค์ ์คํ์์ผ์ฃผ์!
ํฐ๋ฏธ๋์ python manage.py runserver~~!!~
admin ํ๋ฉด์ ์์ด๋ ๋น๋ฒ ์ ๋ ฅํ๋ฉด ํ๋ฉด์ด ๋์จ๋ค!!!!
user์ ๋๋ฌ์ฃผ๋ฉด
๋ฐฉ๊ธ ๋ง๋ ๊ด๋ฆฌ์ ๊ณ์ ์ด ๋ณด์ธ๋ค!!! ์ค์!!
2. admin ๊ณ์ ์ UserModel ๋ฃ๊ธฐ
์ด์ ์ฌ๊ธฐ django admin ๊ณ์ ์ ์๊น ๋ง๋ UserModel์ ๋ฃ์ด์ฃผ์!!
user์ ์๋ models.py์ ์๊น UserModel์ด๋ผ๋ class๋ฅผ ๋ง๋ค์ด์คฌ๋๋ฐ
userํด๋์ models๋ฅผ adminํ์ด์ง์ ์ ์ฉํ๊ธฐ ์ํด์๋ admin.py๋ฅผ ์ด์ฉํด์ผํ๋ค!
์๋ ์ฝ๋ ๋ณต๋ถํ๊ณ admin ํ์ด์ง ์๋ก๊ณ ์นจํด์ฃผ์!
from django.contrib import admin # admin tool์ ์ฌ์ฉํ๊ฒ ๋ค!
from .models import UserModel # ๋ด๊ฐ ๋ง๋ UserModel ๋ชจ๋ธ์ ๊ฐ์ ธ์ค์!
# Register your models here.
admin.site.register(UserModel) # ์ด ์ฝ๋๊ฐ ๋์ UserModel์ Admin์ ์ถ๊ฐ ํด ์ค๋๋ค
๋ค์ด์์๋ค!!!!
User models๋ฅผ ํด๋ฆญํ๊ณ +add ์๋๋ฉด add user model+์ ๋๋ฅด๋ฉด
์๊น ๋ง๋ ์ด๋ฆ, ๋น๋ฒ, bio๊ฐ ๋์จ๋ค!
๊ทผ๋ฐ created_at์ด๋ updated_at๋ ๋ง๋ค์๋๋ฐ ๊ทธ๊ฑด ์ ์๋์๋!
์๋๋ฉด ์ฅ๊ณ ๊ฐ ์๋์ผ๋ก ์๊ฐ๊ณผ ์์ ํ์๊ฐ, ์์ฑํ ์๊ฐ์ ๋ฃ์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ํ๋์ง ์๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค!
'๐๐ช > Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2์ฃผ์ฐจ_3๋ฒ์งธ_ํ์๊ฐ์ , ๋ก๊ทธ์ธ ํ๋ฉด ๋์ฐ๊ธฐ (1) | 2022.09.22 |
---|---|
2์ฃผ์ฐจ_2๋ฒ์งธ_Tweet ์์ ํ๊ธฐ (0) | 2022.09.22 |
1์ฃผ์ฐจ django ๋ณต์ต (1) | 2022.09.22 |
vs code ๊ฐ์ํ๊ฒฝ ์ค์ ํ๊ธฐ (1) | 2022.09.21 |
1์ฃผ์ฐจ_์น๊ตฌ์กฐ, django๊ธฐ๋ณธ๊ตฌ์กฐ/์๋ฆฌ (0) | 2022.09.21 |
๋๊ธ