model이란 데이터, 즉 데이터 베이스에 저장되는 데이터를 의미한다.
원래는 서버할 때 DB를 SQL언어를 통해 다루는게 일반적인데,
우리 django 는 ORM(Object-Realtional-Mapping)을 제공하기 때문에
SQL을 모르더라도 쉽게 다룰 수 있다!(Nodejs에서 sequelize와 동일한 역할!)
🤔 그렇다면, MTV는 무엇이냐?
👉 M (Model) : DB에 저장되는 데이터 영역
👉 T (Template) : 사용자에게 보여지는 영역
👉 V (View) : 요청을 받고 전달하는 데이터들을 해당 앱의 로직으로 가공해 템플릿에 보내주는 역할
모든 model 객체는 app 디렉토리 내에 models.py에 선언할 것이다!
📃 models.py
from django.db import models
# Create your models here.
class Review(models.Model):
title = models.CharField(max_length=50)
body = models.TextField()
date = models.DateTimeField('date')
# admin 에서 글 제목 표시함
def __str__(self):
return self.title
🤔 admin이 뭐냐??? 🔜 밑에서 설명할거임!
django 공식 문서에 따르면 migration이란,
마이그레이션은 모델에 대한 변경 사항 (필드 추가, 모델 삭제 등)을 데이터베이스 스키마에 전파하는 Django의 방법입니다. 대부분 자동으로 설계되었지만 마이그레이션시기, 실행시기 및 발생할 수있는 일반적인 문제를 알아야합니다.
Model을 생성하고 난 후, 해당 모델에 상응하는 테이블을 데이타베이스에서 생성할 수 있다. Python 모델 클래스의 수정과 생성을 DB에 적용하는 과정을 Migration이라고 한다. 생성과 수정 후에는 무조건 migration을 해서 DB가 알 수 있도록 해주어야 한다.
즉! DB 업데이트다!
📃 settings.py (프로젝트 디렉토리 내에 있음)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
다음 명령어를 입력해 migration을 만들자!
$ python manage.py makemigrations
이제 해당 migration파일을 DB에 반영하자!
$ python manage.py migrate
이렇게 성공해야한다.
django는 참 신기하게 관리자를 위한 페이지를 제공한다.
친절하네
모델에 대한 관리용 인터페이스를 모두 자동으로 생성해주는 django!
🤔 자자 그래서 admin은 어떻게 이용하는데?
$ python manage.py createsuperuser
admin.py (app 디렉토리 내에 있음)
from django.contrib import admin
from .models import Review
# Register your models here.
admin.site.register(Review)
자자 이제 '/admin'으로 들어가서 로그인을 하면~
짜란~
이렇게 관리할 수 있는 페이지가 나온다.
저 '+Add' 버튼을 누르면 admin 페이지에서도 데이터 입력이 가능하다는 점!
'Change'는 데이터를 수정할 수도 있다.
정말 django는 배우면 배울수록 다른 서버 프레임워크보다
이다.