django 프로젝트의 python앱 만들기를 진행해보려한다.
python manage.py startapp 앱명칭
python manage.py startapp comment
python manage.py startapp account
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'comment',
'account',
]
모델이란 부가적인 메타데이터를 가진 데이터베이스의 구조(layout)를 말합니다.
from django.db import models
# Create your models here.
class Account(models.Model):
user_id = models.CharField(max_length = 100, unique = True)
email = models.CharField(max_length = 100, unique = True)
password = models.CharField(max_length = 200)
created_at = models.DateTimeField(auto_now_add = True)
upadated_at = models.DateTimeField(auto_now = True)
class Meta:
db_table = "account"
userid, e-mail : 문자열을 저장할 수 있도록 CharField로 지정해주었고 user_id와 e-mail모두 중복되지 않아야 한다고 생각되어 unique = True값을 주었다
password : 추후 암호화할 것을 생각하여 200자의 제한으로 넉넉히 공간을 확보하였다.
created_at : 생성시각에 대한 정보. DateTimeField로 지정해주었다. auto_now_add = True를 설정할 경우, 해당 테이블에 새로운 행이 생길때마다 시간정보를 저장해준다
updated_at : 역시 DateTimeField로 지정. 해당 테이블의 해당된 행이 업데이트되었을 때마다 시간정보를 저장해준다. 아마도 최근 유저정보 변경 내역을 확인하려할 때 사용할 수 있을것으로 보인다.
class Meta : 모델의 메타데이터에 관한 클래스. db-table = "account"를 설정하여 해당 테이블의 이름을 account로 지정해 주었다.
(만약 이를 지정해주지 않으면, 앱명모델명으로 테이블 명이 자동 지정되게 된다. 위 모델의 경우 account_Account가 되므로 account로 따로 지정해주었다.)
python manage.py makemigrations account
해당 앱 디렉토리의 하위에 migrations에 파일이 생성되었다면 성공.
이제 마이그레이션을 실행시켜 실제 데이터베이스에 변경된 마이그레이션 사항들을 적용시킨다.
python manage.py migrate
해당 프로젝트의 db를 열어(필자는 DB_Browser_for_sqlite3사용) 내가 설계한대로 테이블이 짜여진 것을 확인 가능하다.
(필자는 해당 과정 모두 진행한 후에, 데이터 입력까지 진행해보았기 때문에 데이터가 입력되어있다.)