AbstractUser 또는 AbstractBaseUser
먼저 설명합니다…
추상 사용자
AbstractUser 클래스는 초기에 아래와 같이 기본 "User"클래스와 동일하게 11개의 필드를 가지며 AbstractUser 클래스의 하위 클래스에 대해 새 필드를 추가하고 초기 필드를 변경 및 제거할 수 있습니다.
AbstractUser 클래스의 초기 필드에 있는 "사용자 이름"및 "이메일"필드는 특별하며 "사용자 이름"필드에만 고유 제약 조건이 있음을 명심하십시오.
이들은 아래와 같이 기본 "사용자"클래스가 갖는 AbstractUser 클래스의 초기 필드입니다.
id
password
last_login
is_superuser
username (Special, Unique Constraint)
first_name
last_name
email (Special)
is_staff
is_active
date_joined
AbstractBaseUser
AbstractBaseUser 클래스는 초기에 아래와 같이 3개의 필드를 가지고 있으며 AbstractBaseUser 클래스의 하위 클래스에 대해서는 AbstractUser 클래스와 동일하게 새로운 필드를 추가하고 초기 필드를 변경 및 제거할 수 있습니다.
AbstractBaseUser 클래스의 초기 필드는 아래와 같습니다.
id
password
last_login
우리가 본 것에서...
AbstractUser는 이미 익숙한 필드가 포함된 전체 사용자 모델입니다. 이는 추상 클래스이므로 상속할 수 있고 데이터베이스 및 메서드에 필요한 고유한 프로필 필드를 추가할 수 있습니다. 데이터베이스의 스키마 변경입니다.
추가할 수 있는 필드는 date_of_birth, User 모델의 위치와 같이 기본적으로 있던 완전한 필드와 추가된 필드를 얻을 수 있음을 의미합니다.
위의 예에서는 User 모델의 모든 필드와 여기서 정의한 date_of_birth, location 및 alias 필드를 추가로 얻을 수 있습니다.
AbstractBaseUser에는 인증 기능만 포함되어 있습니다. 하위 클래스를 만들 때 제공해야 합니다. 더 적은 가정을합니다.
이미 알고 있듯이 AbstractBaseUser 클래스에도 "USERNAME_FIELD"가 있으며 기본적으로 "USERNAME_FIELD"로 설정된 필드가 없으므로 위에 표시된 대로 하나의 기존 필드를 여기에 설정해야 합니다. 그렇지 않으면 오류가 발생합니다. 또한 "REQUIRED_FIELDS"로 설정된 필드가 없습니다.
AbstractUser를 사용하여 이메일을 고유 식별자로 설정할 수도 있다는 점에 유의해야 합니다. 이는 아래와 같이 사용자 이름 = 없음 및 USERNAME_FIELD = '이메일'로 설정하여 수행할 수 있습니다.
이제 어느 것을 사용해야 합니까?
주요 차이점은 기본적으로 사용 사례에 있습니다. 예를 들어 Django에서 제공하는 기존 User 클래스가 더 이상 필요하지 않고 User 클래스와 사용자 지정 필드에서 제공하는 인증 기능에만 관심이 있다고 가정해 보겠습니다. 이 경우 AbstractBaseUser를 사용해야 합니다. 또 다른 경우에는 기존 사용자 필드와 기능을 사용하고 그 위에 몇 가지 추가 필드와 메서드를 추가하려고 합니다. 이 경우 AbstractUser를 사용해야 합니다.
피드백이 필요하면 다음 주소로 문의하세요.
Reference
이 문제에 관하여(AbstractUser 또는 AbstractBaseUser), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/itsweshy/abstractuser-or-abstractbaseuser-1bf7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)