๐ Model๋ก DB ๊ตฌ์ฑํ๊ธฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค (๊ตฌ์กฐํ)
- Relational DB (ํ ์ด๋ธ ํ์์ผ๋ก) → row(record) , column(attribute)
- pandas df์ ์์ ํ ์ ์ฌ
- max( ), groupby( ) apply ๊ฐ๋ฅ
- SQL
ORM Object → ๊ฐ์ฒด
- django์ ๋ด์ฅ๋์ด ์๋ค.
๐ models.py
model์ ๋ง๋ค ๋ class ๋จ์๋ก ๋ง๋ค ์ ์๋ค.
class <๋ชจ๋ธ ์ด๋ฆ>(models.Model):
field1 = models.FieldType(option ์ถ๊ฐ ๊ฐ๋ฅ)...# Field 1 _field์ type์ ์ ํ ์ ์๋ค.
field2 = models.FieldType()...# Field 2
"""
๋ฌธ์์ด : CharField
์ซ์ : IntegerField, SmallIntegerField,...
๋
ผ๋ฆฌํ : BooleanField
์๊ฐ/๋ ์ง : DateTimeField
...
"""
filed option ์ฐพ์๋ณด๊ธฐ
class Coffee(models.Model):
name = models.CharField(default="",max_length=30)
price = models.IntegerField(default=0)
is_ice = models.BooleanField(default=False)
๐ admin.py
์ด๋ค ๋ชจ๋ธ์ด ์์ ๋ ์ด๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
from .models import Coffee # admin.py์์ Coffee๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
admin.site.register(Coffee)
โถ๏ธ models.py, admin.py ์์ฑ ํ http.../admin/์ ์ ์ํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์จ๋ค.
→ ์์ ํ๋ฉด์์ Coffees๋ฅผ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
→ DB์ ๊ด์ ์์ DB์ ์ด๋ค ๋ณ๋ ์ฌํญ์ด ์๊ธฐ๋ฉด, ์ด ๋ณ๋ ์ฌํญ์ settings.py์์ ๋ฐ์ํด์ค์ผ ํ๋ค.
โถ๏ธ ์์ ๋ฐ์ํ no such table์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์์ ์ด ํ์ํ๋ค.
django-proj/webproj > python manage.py makemigrations homepage
# ๋ง๋ค์ด์ง migration์ ๋ฐ์ดํฐ์ ๋ฐ์
django-proj/webproj > python manage.py migrate
⇒ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ง๋ค์ด์ง๋ ๊ตฌ์กฐ๊ฐ ๋๋ค.
โถ๏ธ migrate ์คํ ํ admin์ Coffees๋ฅผ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ด models.py์์ ์์ฑํ๋ ๋ถ๋ถ์ ๋ณผ ์ ์๋ค.
→ Add coffee๋ฅผ ํตํด 2๊ฐ์ Object๋ฅผ ์ถ๊ฐํ ํ ์๋์ ๊ฐ์ด ์ ์ฅ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
โถ๏ธ Coffee object (1), (2)๋ผ๊ณ ๋์์์ด์ ์ด๋ค ๊ฒ์ธ์ง ์๊ธฐ์ ์ด๋ ค์์ด ์๋ค.
๐ models.py
# models.py
class Coffee(models.Model):
def __str__(self): # Coffee ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ ๊ณผ์ ์์ ์ด๋ค ๋ฌธ์์ด์ ๋ณด์ฌ์ค ์ง ๊ฒฐ์ ํ๋ ํจ์์ด๋ค.
return self.name # Coffee ๊ฐ์ฒด๋ฅผ ๋ํํ๋ self.name์ด ์ถ๋ ฅ๋ ์ ์๊ฒ ํ๋ค.
name = ...
...
⇒ object๊ฐ ์๋ name์ผ๋ก ์ถ๋ ฅ๋์ด ๋ณด๊ธฐ ํธํด์ก๋ค.
๐ django error : That port is already in use
๊ฐ์๊ธฐ ์ค๋ฅ๋ฅผ ๋ง์ดํ๊ฒ ๋๋ค...๐ค
ํด๊ฒฐ
django-proj/webproj > lsof -i:8000
kill -9 [PID]
lsof -i:8000 # ๋ค์ ํ์ธํด๋ณธ๋ค.
python manage.py runserver # ํด๊ฒฐ์๋ฃ
ํน์ ๋ค๋ฅธ ์๋น์ค๊ฐ ์ด๋ฏธ 8000๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด
python manage.py runserver 0.0.0.0:8001
'Tech > Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] 05. Form์ผ๋ก Template์์ Model ์์ ํ๊ธฐ (0) | 2025.02.12 |
---|---|
[Django] 04. Template์์ Model ํ์ธํ๊ธฐ (0) | 2025.02.12 |
[Django] 02. Template (0) | 2025.02.11 |
[Django] 01. View (0) | 2025.02.11 |
[Django] 00. Django ์์๋ณด๊ธฐ (0) | 2025.02.11 |