이제 Model을 구현해보겠습니다.
그전에 Django - Basic - 8까지 진행한 firstapp과 구분하기 위해 second라는 앱을 만들어 주겠습니다.
$ python manage.py startapp second
그리고 app을 만들어줬으니 settings.py에서 'second'를 추가합니다.
그리고 Django - Basic - 8까지는 rootURL로 접근했을 시 firstapp으로 권한을 넘겼지만 이제는 app이 하나 더 생겼으니 각자 url을 정해줍니다.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('firstapp', include('firstapp.urls')),
path('second', include('second.urls')),
path('admin/', admin.site.urls),
]
#second/urls.py
from django.urls import path
from . import views
urlpatterns = [
]
기본적인 설정은 완료했고 이제 진짜 model을 건드려보도록 하겠습니다.
second 앱의 model을 정의하겠습니다.
#second/models.py
from django.db import models
class Post(models.Model): # Post 라는 게시글을 나타내는 모델을 정의
title = models.CharField(max_length=30) # 30자 이하의 문자열
content = models.TextField() # 긴 문자열
created_at = models.DateTimeField(auto_now_add=True) # 글 작성 시 (이 모델의 데이터(레코드) 저장 시) 생성 시각
updated_at = models.DateTimeField(auto_now=True) # 저장된 레코드 수정 시 수정 시각
# num_stars = models.IntegerField() # 숫자 필드는 이렇게 선언한다.
Post라는 모델의 특성은 title, content, created_at, updated_at입니다.
각 필드에 대한 설명은
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Models
을 참고하면 됩니다.
이제 model을 정의했으니 DB에 이 사실을 알립니다.
$ python manage.py makemigrations second
$ python manage.py migrate second
makemigrations는 migrate할 준비를 합니다. git에서 add와 비슷합니다.
migrate는 실제 DB로 모델 클래스가 DB에 맞게 번역되어 DB에 들어갑니다.
프로젝트에 따라 DB는 다를 수 있습니다. DB를 바꾸기 위해서는 settings.py에서 DATABASE의 ENGINE을 변경해주면 됩니다.
지금은 이 내용까지 다루지 않겠습니다. Django의 기본으로 설정되어있는 sqlite3을 가지고 진행하도록 하겠습니다.