Django User
- Django User Model 란?
Django에서는 기본적으로 제공하는 User 모델이다. 이 User 모델은 django.contrib.auth.models.User에 다음과 같이 정의되어 있다.
class User(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
표준 User 모델은 AbstractUser를 상속받고 있는 것을 알 수 있다. 또한 표준 User 모델에서는 다음과 같은 칼럼이 정의되어 있다.

👉 하지만 Django User Model은 username으로만 로그인이 가능하며 이외의 필드들이 필요할 때 자유롭게 쓰지 못하는 단점들이 있다. 이 단점을 보완하고 실제 서비스에서 더 다양한 User의 정보를 얻기 위해서Custom User를 통해 모델을 정의해준다.
Django Custom User
- Django Custom User Model 란?
장고에서 기본적으로 제공하는 필드 이외에 다양한 내가 필요한 User정보를 얻기 위해 다양한 필드들로 Customizing한 모델이다.
- Django Custom User Model 만들기
custom user 모델을 구현하기 위해서는 BaseUserManager와 AbstractBaseUser 클래스를 상속받아 새롭게 구현해야 한다.
from django.db import models
from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
- BaseUserManager는 유저를 생성하는 역할을 하는 헬퍼 클래스이고,
- UserManager 클래스에서 create_user와 create_superuser 함수를 통해 일반 user와 관리자 user 객체를 생성하는 코드작성
- AbstractBaseUser는 실제 모델이 상속받아 생성하는 클래스이다.
- AbstractUser인 User 클래스에서는 사용자 모델에 필요한 field를 작성해주었고, USERNAME_FIELD, REQUIRED_FIELDS를 설정
'woncoding > TIL' 카테고리의 다른 글
| TIL | 2.13.월 [Open API] (0) | 2023.02.14 |
|---|---|
| TIL | 2.10.금 [CI/CD] (0) | 2023.02.13 |
| TIL | 2.8.수 [TDD | Test Code] (0) | 2023.02.09 |
| TIL | 2.7.화 [Rest API / Fast API] (0) | 2023.02.09 |
| TIL | 2.6.월 [CS 기초지식 | JWT] (0) | 2023.02.07 |