Django를 통한 Web Workflow의 단계는 아래와 같다.
1) Client(Front-end)에서 Server에 Request를 보낸다.
2) URL_conf(urls.py)에서 Request를 보낸 url을 파싱하여 해석한 요청에 맞춰 View 내 함수에 라우팅을 해준다.
3) View에 있는 함수에서 Model에 데이터 CRUD를 요청한다.
4) Model에서 ORM을 통하여 Database에서 View에서 보낸 CRUD 요청을 실행한다.
5) CRUD에 대한 결과를 Client에 Response로 보낸다.
오늘은 여기서 ERD를 짜고 데이터를 만들고 호출하는 Model에 대해서 알아보고자 한다.
앞서 장고 프로젝트를 만들고 startapp 명령어를 통해서 app을 만들었어야 Model 작업이 가능하다.
├── manage.py
├── app_name
│ ├── models.py : Model class 작성 --> database table과 mapping
│ ├── urls.py
│ └── views.py
└── project_name
└── urls.py
from django.db import models
class Menu(models.Model):
name = models.CharField(max_length=20)
class Meta:
db_table = 'menus'
class Category(models.Model):
name = models.CharField(max_length=20)
menu = models.ForeignKey('Menu', on_delete=models.CASCADE)
class Meta:
db_table = 'categories'
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey('Category', on_delete=models.CASCADE)
class Meta:
db_table = 'products'
python manage.py makemigrations <앱이름>
#0001_initial.py
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Menu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=45)),
],
options={
'db_table': 'menu',
},
),
....
"python manage.py makemigrations <앱이름>" 명령어를 실행하면 위와 같이 "0001_initial.py"파일이 만들어진다. 그 안에 DB로 만들어질 파이썬 코드가 작성되어 있다.
python manage.py migrate