👉 1. AbstractBaseUser vs AbstractUser 비교
AbstractUser | AbstractBaseUser | |
사용 시기 | Django의 기본 유저 모델이 제공하는 다양한 인증 기능들을 사용 하는 경우 기존 필드에 추가 커스텀 필드만 필요시 사용 |
최소한의 User 필드만 상속 받아 커스텀하여 사용 로그인 방식도 변경(ex. 아이디를 email로), 할 수 있고, 인증 절차를 직접 구현하고 싶을 때 사용 가능 PermissionsMixin 을 함께 상속하여, Django의 기본 그룹, 허가권 관리 등을 사용 가능 |
생성 테이블 비교 | myuser 테이블 (11개 필드)로 구성 id, username, password, last_login, is_superuser, first_name, last_name, email, is_staff, is_active, date_joined myuser_groups 테이블 myuser_permissions 테이블 |
myuser 테이블 (3개 필드) 로 구성 id, password, last_login 단 myuser2_groups나 myuser2_user_permissions 등의 테이블 등은 PermissionMixin과 같은 장고 인증 권한 클래스를 상속 받으면서 생김. |
코드 (아래 예제 코드 비교) |
AbstractUser는 settings.py에 AUTH_USER_MODEL 을 참조 설정을 필요로 함. 전적으로 AbstractUser 모델을 상속하여 따라가는 것이라, 만들고자 하는 User와 AbstractUser 간의 필드를 비교해 보는 것이 필요 |
👉 2. AbstractUser 예제 코드
models.py
from django.contrib.auth.models import AbstractUser
class myUser1(AbstractUser):
# myuser (11개 필드): id, username, password, last_login.. 등
# myuser_groups, myuser_permissions의 추가 테이블 생성
# Django의 Default 사용자 인증 column들을 그대로 사용하는 경우.
# 추가 필드 bio = models.CharField(max_length=20)
pass
admin.py
from django.contrib import admin
from .models import myUser1
# Register your models here.
admin.site.register(myUser1)
settings.py
AUTH_USER_MODEL = 'user.myUser1'
👉 3. AbstractBaseUser 예제 코드
models.py
# models.py
from django.contrib.auth.models import AbstractBaseUser
class myUser2(AbstractBaseUser):
# 기본적으로 id, password, last_login이 생성됨.
# 자율적으로 custom 필드 추가하여 사용
pass
admin.py
# admin.py
from django.contrib import admin
from .models import myUser2
# Register your models here.
admin.site.register(myUser2)
참고 문헌
'Python > Django' 카테고리의 다른 글
[Django] Pure Django vs DRF (Django Rest Framework) (0) | 2022.06.28 |
---|---|
[Django] 트랜잭션 이란? (Transaction.atomic) (0) | 2022.06.21 |
[Django] CBV (클래스 기반 View) vs FBV (함수 기반 View) (0) | 2022.06.19 |
[Django] ORM Queryset API - 메소드 정리 (0) | 2022.06.15 |
[Django] 무식한 라이브러리 분해 4 (settings.py) (0) | 2022.06.15 |