03.-1 Users 앱

조재훈·2022년 7월 15일
0

Clone_Airbnb

목록 보기
6/31
post-thumbnail

1) Users 모델 대체

admin 페이지에서 Users 항목을 들어가보면 아래와 같이 나온다.

우리가 만든 Users앱은 여기에 기능이 조금 더 추가된 형태가 될 것이다. 가령 프로필 사진을 추가한다던가, 자기소개나 국적 등....

니꼬 선생님은 공식 문서를 확인할 것을 강조하셨다.
그 가르침에 따라...

https://docs.djangoproject.com/en/4.0/topics/auth/customizing/
Django Document - Customizing authentication in Django

기존의 Users 모델을 대체(replace)하려면 AUTH_USER_MODEL을 직접 만든 모델로 대체해주어야 한다.

2) 자작 Users 모델 만들기

그럼 Users 모델을 직접 만들어보자
우선 AbstractUser 클래스를 import 한다.

from django.contrib.auth.models import AbstractUser

그리고 User 클래스를 생성하고 AbstractUser를 상속받는다. (내용은 일단 비워둔다)

class User(AbstractUser):
pass

AbstractUser 클래스를 살펴보면 아래와 같은 정보들을 기본으로 탑재하고 있다.

username
first_name
last_name
email
is_staff
is_active
date_joined

3) 자작 모델 설치

config 폴더의 settings.py 파일을 보면 INSTALLED_APPS가 있다. 여기에 명시를 해주어야 장고가 인식하고 실행할 수 있다.

그런데 시스템상으로 설치된 앱들과 내가 필요할 때 추가하는 앱들이 섞여있으면 나중에 헷갈릴 수 있으니 구분을 해주자.

DJANGO_APPS = [ ~~~ ]
PROJECT_APPS = ["users.apps.UsersConfig",]
INSTALLED_APPS = DJANGO_APPS + PROJECT_APPS

PROJECT_APPS에 추가하는 내용은 앱 폴더의 apps.py에 있는 클래스를 추가해준다. 여기서 추가한 UsersConfig의 내용은 아래와 같다.

4) 에러 해결

위와 같이 수행하면 에러가 발생한다.

내용인 즉슨 이미 User 클래스가 존재하기 때문에 이것과 충돌이 일어났다는 것이다.
그러니까 일단 서버를 닫고 db를 삭제하자.

그리고 아까 1) 에서 하려던걸 마저 해주자.
config - settings.py

AUTH_USER_MODEL = 'users.USER'

다시 서버를 켜보자
또 에러가 뜨네?

migration이 안되었다고 한다.

5) migration

콘솔

python manage.py makemigrations

앱 폴더 내 migrations 폴더에 migration 파일이 생성되는 것을 볼 수 있다.

저 migration 파일을 열어보면 이전에 추가한 내용들이 전부 반영되어있다.

이제 migrate를 하자

python manage.py migrate

그리고 서버를 실행하면 정상적으로 실행된다.

DB를 삭제했으니 superuser는 알아서 다시 생성하자

profile
맨땅에 헤딩. 인생은 실전.

0개의 댓글