AbstractUser 또는 AbstractBaseUser

Django 개발자라면 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를 사용해야 합니다.

    피드백이 필요하면 다음 주소로 문의하세요.

    좋은 웹페이지 즐겨찾기