username 없이 이메일로 회원가입을 시도했지만 다음과 같은 오류가 발생하였다
장고에서 제공해주는 create_user()는 필수적으로 username이 있어야 했기 때문에 발생하는 오류였다.
따라서 create_user 메소드를 재정의하여 문제를 해결하였다
accounts/models.py
class UserManager(BaseUserManager):
def create_user(self, email, password, **extra_fields):
if not email:
raise ValueError({"email": "이메일은 필수 입력항목입니다."})
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save()
return user
BaseUserManager를 상속받아 UserManager를 만들어 주고 create_user를 정의해주었다
그리고 AbstractUser를 상속받은 커스컴 유저 모델에서 다음과 같이 작성해주었다
class User(AbstractUser):
...
# 비활성화 필드
username = None
...
# 필수 필드
email = models.EmailField(unique=True, blank=False)
USERNAME_FIELD = "email" # uesrname 대신 email을 ID로 사용
REQUIRED_FIELDS = []
objects = UserManager() # custom UserManager 사용을 명시함
...
'[내일배움캠프]스파르타코딩클럽 AI 웹개발 > Today I Learned' 카테고리의 다른 글
[TIL] modal 창의 내용 중복 이슈 (0) | 2024.10.01 |
---|---|
[TIL] parcel 삭제 (0) | 2024.09.30 |
[TIL] 프로젝트 데이터베이스 선택: MySQL을 채택한 이유와 PostgreSQL과의 비교 (2) | 2024.09.25 |
[TIL] 추가 기능 논의 및 ERD 수정 작업 (2) | 2024.09.24 |
[TIL] 프로젝트 기획 및 Open API 활용 전략 수립 (0) | 2024.09.23 |