brunch

매거진 백엔드

You can make anything
by writing

C.S.Lewis

by 내가 사는 세상 Nov 30. 2023

Django - 계정(accounts)앱 - model

목차

1. AbstractBaseUser

2. AbstractUser

3. User 모델 사용법 #AUTH_USER_MODEL




 장고에선 고객(계정)을 표현하는 다양한 클래스를 기본적으로 제공한다. 가벼운 것에서 무거운 순으로 알아보자. 가벼울 수록 기본적으로 제공해주는 코드가 적어 개발자 입맛에 맞춰 커스텀이 쉽다(자유도가 높다). 하지만 한땀한땀 설정해줘야하기에 생산성은 떨어진다는 단점도 있다.




1. AbstractBaseUser


해당 클래스의 주요 필드는 다음과 같다.

password

last_login

is_active


https://github.com/django/django/blob/main/django/contrib/auth/base_user.py#L39



from django.contrib.auth.base_user import AbstractBaseUser


class User(AbstractBaseUser, PermissionsMixin):

    pass




2. AbstractUser


좀더 많은 기능을 제공하지만, 자유도는 낮은 AbstractUser를 상속 받는 경우도 있다. AbstractUser는 AbstractBaseUser과 PermissionsMixin을 상속받은 뒤, 약간의 필드, 설정과 매소드를 추가한 것이다. 여기서 약간의 필드란 다음과 같다. 

username

first_name

last_name

email

is_staff

is_active

date_joined


추가적인 주요 설정은 다음과 같다.

EMAIL_FIELD = "email"

USERNAME_FIELD = "username"

REQUIRED_FIELDS = ["email"]


https://github.com/django/django/blob/main/django/contrib/auth/models.py#L335




from django.contrib.auth.models import AbstractUser


class User(AbstractUser):

    pass





3. User 모델 사용법


기본적으로 장고 내부에는 AUTH_USER_MODEL = 'auth.User'이 설정되어 있다.

이를 수정하여 settings.py에 AUTH_USER_MODEL = 'accounts.User' 라고 정의한다.


그후 사용하고 싶은 곳에서 다음과 같이 설정하면 된다.

from django.contrib.auth import get_user_model


User = get_user_model()




매거진의 이전글 Django DRF - View
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari