โ ์น ํ๋ ์์ํฌ๋ ?
๊ฐ๋ฐ์ ๋์์ฃผ๋ ํ๋์ ํ๋ก์ ํ์ด์ฌ ์น ํ๋ ์์ํฌ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๋ฐ, ๊ทธ ์ค ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ฉด ์ต์ํ์ ๊ธฐ๋ฅ๋ง ์ ๊ณตํ๋ ํํ์ธ 'flask','pyramid'๊ฐ ์๋ค. ๋ํ ์ด๋ฏธ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๊ณ ์๋ ํํ์ธ 'Django'๊ฐ ์๋ค.
โ ORM ๋ ?
๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ)ํด์ฃผ๋ ๊ฒ์ผ๋ก,
Django์ ORM์ Python์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋์ค ๋ชจ๋ธ์ ๋ง๋ค๊ณ , ๋ง๋ ๋ชจ๋ธ์ ๋ฐํ์ผ๋ก ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ์ ์๋๋ก ๋์์ค๋ค.
๐งฉ ์ ์ฉ ์์
class Post:
id = IntegerField()
title = CharField()
author = CharField()
context = TextField()
๊ฐ์๋ฅผ ํ์ตํ๋ฉฐ ๋ง๋ค๊ฒ ๋ ๊ธฐ๋ฅ์ SNS๊ธฐ๋ฅ์ผ๋ก์ ํฌ๊ฒ ์ธ๊ฐ์ง ์ ๋๋ก ์๊ฐํ ์ ์๋ค.
1) ์ฌ์ฉ์๊ด๋ฆฌ
2) ๊ธ์ฐ๊ธฐ
3) ์น๊ตฌ๋ง๋ค๊ธฐ
์ด์ ํ์ํ ํ๋ก์ ํธ์ ๊ธฐ๋ฅ์ ํ ์ ์๋ '์ฑ'์ ์๋์ ๊ฐ์ด ๋ง๋ค ์ ์๋ค.
๐งฉ ์ ์ฉ ์์
$ django-admin startapp user
$ django-admin startapp tweet
-> user์ฑ - ์ฌ์ฉ์๊ด๋ฆฌ(ํ์๊ฐ์
,๋ก๊ทธ์ธ,๋ก๊ทธ์์)๋ด๋น
-> tweet์ฑ - ๊ธ ๊ด๋ฆฌ(๊ธ์ฐ๊ธฐ,์ญ์ ,์์ ,๋๊ธ)
๐งฉ ์ ์ฉ ์์
#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)
์์ ๋ชจ๋ธ ํด๋์ค์์ 'class Meta' ๋ ์ด ๋ชจ๋ธ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๊ณ , django์์ ์ ๊ณตํ๋ models๋ฅผ ์ฌ์ฉํด์ ๊ฐ ์์์ ์ด๋ค ๋ฐ์ดํฐ์ ํ์์ด ๋ค์ด๊ฐ ์ง ์ ํด์ฃผ๊ณ , ๊ฐ ํ๋์ ์ ํ์ ๋์๋ค.
์ด๋ ๊ฒ ๋ง๋ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฃ์ด์ฃผ์ด์ผํ๋๋ฐ, ๋ ๋จ๊ณ๋ก ๋๋ ์ ์๋ค.
1) '๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ์ ์๋ ค์ฃผ๋ ๋ช
๋ น์ด'
python manage.py makemigrations
2) '๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ์ ํด ์ฃผ๋ ๋ช ๋ น์ด'
python manage.py migrate
โ Django Admin ๋ ?
์์์ ๋งํ๋ฏ์ด ์ฅ๊ณ ๋ ์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํ์ง ์๊ณ ๋ ์ฌ์ฉ ํ ์ ์๋๋ก ์ด๋ฏธ ๋ง์ ๊ธฐ๋ฅ์ด ๊ตฌ์ถ๋์ด ์๋๋ฐ, ๊ทธ ๋ํ์ ์ธ ์๊ฐ ๋ฐ๋ก 'Admin'์ด๋ค. ์ด ๊ด๋ฆฌ์ ์ฌ์ดํธ๋ฅผ ์ปค์คํฐ ๋ง์ด์ง ํ์ฌ ๋น ๋ฅด๊ฒ ์ด๊ธฐ ๊ฐ๋ฐ์ ํ ์ ์๋ค.
'createsuperuser' ๋ฅผ ๋ง๋ค์ด์ผ admin ํ์ด์ง์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก ๊ด๋ฆฌ์๋ฅผ ๋ง๋ค์ด์ค์ผํ๋ค.
python manage.py createsuperuser
๊ทธ๋์ flask๋ก๋ง ์นํ์ด์ง๋ฅผ ๊ฐ๋ฐํด๋ดค๋๋ฐ, Django๋ฅผ ๋ฐฐ์ฐ๋๊น ํ์คํ flask๋ ์ด๊ฐ์ง๊ณผ ๊ฐ์ด ์ต์ํ์ ๊ธฐ๋ฅ๋ง ์ ๊ณตํ๋๊ตฌ๋๋ฅผ ๊นจ๋ฌ์๋ค. ์์ง ๋ ๋ฐฐ์๋ด์ผ์๊ฒ ์ง๋ง Django๋ ๋ ๊น์ด ์๊ฒ ๋ค์ด๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋๋์ด ๋ ๋ค. flask๋ก๋ ์ผ์ผํ ๋ก๊ทธ์ธ์ด๋ ํ์๊ฐ์ ์ด๋ html๋ถํฐ css๊น์ง ์ง์ ๋ง๋ค์ด์ผํ๋๋ฐ, Admin๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ด ๊ตฌ์ถ๋์ด์๋๊ฒ ์ ๊ธฐํ๋ค. Django์ ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์๋ ์ด๋ฏธ ๊ตฌ์ถ๋์ด์๋ ๊ธฐ๋ฅ๋ค์ ๋ํด ๋ ๋ง์ด ์์๋ณด๊ณ ์ถ๋ค.
๐ ์์ธํ ์ฝ๋๋ Moonmoo ์ ๊ฒ์ํ์ต๋๋ค
์ค์ค ๊ณต๋ถ๋ฅผ ๋ง์ดํ์ จ๊ตฐ์