참고문서


기본 프로젝트 설정이 완료되었다는 가정하에 시작한다.

프로젝트 구조

# 프로젝트 컨테이너 폴더
instagram-project/
  # Django 프로젝트 폴더 (Sources Root)
  instagram/
    # 설정파일 모음 패키지
    config/
      __init__.py
      ...

member앱 생성 및 MyUser모델 생성

장고는 기본적으로 django.contrib.auth라는 인증 관련 애플리케이션을 제공하며, 특별히 사용자 모델을 지정하지 않으면 기본 유저 모델인 django.contrib.auth.User모델을 사용한다.

만약 기본 장고 유저 모델을 사용하던 중에 커스텀 유저 모델로 변경하면 장고의 makemigrations명령어로는 기존의 데이터베이스에서의 변경점을 자동으로 마이그레이션 파일로 만들지 못한다.

추후 커스텀 유저 모델을 사용할 가능성이 조금이라도 있다면 기본 장고 유저와 충돌하지 않도록 미리 정의 해 주는 것이 좋다.

Terminal

./manage.py startapp member

member/models.py

from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
    pass

커스텀 유저 모델을 정의할 때는 AbstractUser또는 AbstractBaseUser클래스를 상속받는다.

Custom user model을 settings.py에 정의

AUTH_USER_MODEL에 사용자 모델로 사용할 클래스를 애플리케이션.유저모델 클래스형식으로 적어준다. INSTALLED_APPS에 member추가

config/settings.py

...
...
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

AUTH_USER_MODEL = 'member.User'
...
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'member',
]
...
...

Django admin에 Custom User등록

member/admin.py

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from .models import User

admin.site.register(User, UserAdmin)

DB migration

./manage.py makemigrations
./manage.py migrate

슈퍼유저 생성

./manage.py createsuperuser