Skip to main content

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

timezone - Django 공식문서

  • 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() ...

models.Manager