Django로 인스타그램 만들기 - 01. 커스텀 유저 모델 사용
참고문서
기본 프로젝트 설정이 완료되었다는 가정하에 시작한다.
프로젝트 구조
# 프로젝트 컨테이너 폴더
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