2022-12-26
[통신사 프로젝트] [BE] 프로젝트 생성 & CustomUser Model 만들기
0.프로젝트 생성
- django-project 의 이름은
tongsinsa_backend
.
django-admin startproject tongsinsa_backend
cd tongsinsa_backend
django-admin startapp tongsinsa_backend
1. 기본 설정 바꾸기
TIMEZONE
tongsinsa_backend/settings.py
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
INSTALLED_APPS
우리가 만든 모델을 db에 migrate하기 위해 필요.
tongsinsa_backend/settings.py
INSTALLED_APPS = [
...,
'tongsinsa_backend'
]
CustomUser
- Django에 User Authentication 에 관해 많이 준비되어 있다하니, 사용해보자.
- 기본 User를 상속 받아서 Auth를 써보자..
models.py
from django.db import models
from django.utils import timezone
import uuid
class CustomUser(AbstractUser):
"""
# id
# password
"""
user_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
student_number = models.IntegerField(editable=False)
department = models.CharField(max_length=100)
is_delete = models.BooleanField(default=False)
date_joined = models.DateTimeField(default=timezone.now, editable=False)
email = models.EmailField()
username = models.CharField(max_length=50)
is_staff = None
is_activate = None
is_sueruser = None
last_login = None
first_name = None
last_name = None
Misc.
uuid
python에는 uuid를 생성할 수 있는 패키지를 제공한다. 출처
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(
primary_key = True,
default = uuid.uuid4,
editable = False)
# other fields
Timezone
django.utils.timezone
패키지에 있음.- 사용하려면
settings.py
파일에USE_TZ = True
되어있어야 함. timezone.now()
사용하면 현 타임존 시간을datetime
object로 줌.
models
Models - Django 공식문서 데이터 모델을 정의하는데 사용되는 객체.
django.db.models
패키지의 Model class를 사용.
model API
각 model instance 에는 db 와 상호작용하는 메서드들이 구현되어있다.
create()
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
@classmethod
def create(cls, title):
book = cls(title=title)
# do something with the book
return book
book = Book.create("Pride and Prejudice")
-
save()
-
update()
-
clean()
field types
각 필드는django.db.models
패키지의 하위 모델들 사용.
Models fields- Django 공식문서
models.UUIDField()
models.IntegerField()
models.EmailField()
models.BooleanField()
models.CharField()
...