본문 바로가기
Coding/Python

Django Custom User Model 만드는 방법

by Hide­ 2018. 4. 18.
반응형

장고는 기본적으로 유저모델을 가지고 있다.


위처럼 /admin 으로 접속하여 확인해보면 기본적으로 유저모델이 존재함을 알 수 있다.

이 모델을 인증관련해서 활용하게 되는 것이다.

그런데 대부분의 경우 Default로 존재하는 유저모델이 아닌 자신의 프로젝트에 맞게

커스텀하는 커스텀 유저모델이 필요할 때가 있다.

따라서 이 포스팅에서는 장고 커스텀 유저 모델을 만드는 방법을 설명한다.

먼저 아래의 명령어로 유저모델로 사용할 앱을 하나 생성해준다.


django-admin startapp users


다음으로 모델을 생성해야 한다. /users/models.py를 다음과 같이 수정한다.


from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
GENDER_CHOICES = (
('male', 'Male'),
('female', 'Female'),
)

name = models.CharField(max_length=255, blank=True)
website = models.URLField(null=True)
bio = models.TextField(null=True)
phone = models.CharField(max_length=140, null=True)
gender = models.CharField(max_length=80, choices=GENDER_CHOICES)


AbstractUser를 상속받은 후 우리의 프로젝트에 필요한 부분들을 추가해주는 방식이다.

아래 원하는 컬럼을 추가적으로 작성해준다.

다음으로 settings.py에서 아래의 부분들을 수정해준다.


INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users'
]

INSTALLED_APPS의 끝부분에 아까 생성한 앱 이름인 users를 기입한다.

그리고 settings.py 아무곳에다가 아래의 내용도 추가해준다.


AUTH_USER_MODEL = 'users.User'

위 코드는 기본 인증 모델로 우리가 생성한 유저모델을 사용하겠다는 뜻이다.

마지막으로 어드민 페이지에서 우리가 생성한 유저모델을 확인하기 위해 /users/admin.py를 다음과 같이 수정한다.



from django.contrib import admin
from .models import User

admin.site.register(User)

register를 통해 우리의 모델을 어드민 패널에 등록해주는 작업이다.

다음으로 makemigrations를 해준다.


위처럼 정상적으로 작업이 수행됐다면 마지막으로 migrate 해준다.


이제 createsuperuser로 어드민 계정을 생성해주고 /admin으로 로그인을 해보면,


이렇게 우리가 생성한 유저모델이 등록되어 있는것을 확인할 수 있다.