2021.12.14 - [Study/Django] - [Django] 장고 유저 기능 구현하기 #1 (allauth와 contrib.auth의 차이)
유저 기능을 구현하기 위해 가장 먼저 해야 할 일은 유저 모델을 정의하는 것입니다.
앞 게시글에서 모델을 django.contrib.auth로 만든다고 하였는데 이때, contrib.auth는 기본 유저 모델과 상속받아 사용할 수 있는 유저 모델 두 가지를 제공해줍니다.
그래서 선택할 수 있는 옵션은 총 3가지입니다.
- 기본 유저 모델 사용하기
- AbstractUser모델을 상속받아서 사용하기
- AbstractBaseUser 모델을 상속받은 후 커스터마이징 하기
이렇게 3가지의 옵션이 있는데 이 중 첫 번째는 장고에서 권장되지 않습니다.
그 이유는 장고에서 유저 모델을 한번 정의하면 다른 모델로 바꾸는 것이 어렵기 때문입니다.
그럼 AbstractUser모델과 AbstractBaseUser모델의 차이를 알고, 그중에서 선택하면 되겠죠?
AbstractUser모델은 있는 기능을 정의만 해서 사용하면 되는 반면에 AbstractBaseUser모델은 유저를 만들기 위한 틀만 제공하고, 유저에게 필요한 모든 필드를 직접 정의해줘야 합니다.
즉 그냥 있는 것을 가져다 쓰고 싶다면 AbstractUser모델을 사용하고, 자신이 모든 기능을 커스터마이징 해서 사용하고 싶다면 AbstractBaseUser모델을 사용하면 됩니다.
하지만 저는 기본적으로 설정된 필드를 사용할 것이기 때문에 2번 옵션인 AbstractUser모델을 사용하겠습니다!
# models.py
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
위와 같이 models.py에 AbstractUser를 상속받고 모델을 생성해줍니다!
현재 바로 모델을 사용할게 아니기 때문에 내용엔 pass로 넣어놨습니다.
# settings.py
AUTH_USER_MODEL = '앱이름.모델이름'
AUTH_USER_MODEL = 'coplate.User'
그 후 settings.py 에 가서 위의 내용을 추가해줍니다! 저의 경우엔 앱 이름은 coplate이고, 모델 이름은 User이기 때문에 위와 같이 적어주었습니다.
이렇게 설정을 해주어야 migration을 했을 때 저의 커스텀 유저 모델을 참조해서 테이블을 만들어 주고, allauth가 저의 커스텀 모델을 사용할 수 있기 때문입니다.
그 후 변경된 모델을 저장해주고 적용시켜 주면 이번 게시글에서 할 일은 끝!입니다!
다음 게시글에선 드디어 allauth를 세팅해보겠습니다!
'Study > Django' 카테고리의 다른 글
[Django] 장고 유저 기능 구현하기 #4 ( 로그인 및 회원가입 후 Redirect 페이지 변경) (0) | 2021.12.15 |
---|---|
[Django] 장고 유저 기능 구현하기 #3 (all-auth 사용 셋팅) (0) | 2021.12.15 |
[Django] 장고 유저 기능 구현하기 #1 (allauth와 contrib.auth의 차이) (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Generic View- DeleteView) # 6 (0) | 2021.12.14 |
[Django] Django 클래스형 뷰 ( Generic View- UpdateView) # 5 (0) | 2021.12.14 |