DJango의 애플리케이션 이름은 복수형으로 작성한다.
django-admin startapp users
Create superuser
python manage.py createsuperuser
Custom User model
from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): ... ...
- AbstractUser를 상속받아 Django가 제공하는 모델을 재정의 하거나 커스텀할 수 있다.
model field
models.EmailField() models.ImageField() models.CharField() models.DateField() models.BooleanField()
- ImageField는 DJango에서 media를 어떻게 처리하는지 알아야하기 때문에 추후에 다시 다루고
- CharField는 선택상자를 만들 수 있다.
LANGUAGE_ENGLISH = "en" LANGUAGE_KOREAN = "kr" LANGUAGE_CHOICES = ( (LANGUAGE_ENGLISH, "EN"), (LANGUAGE_KOREAN, "KR"), ) language = models.CharField( choices=LANGUAGE_CHOICES, max_length=2, blank=True, default=LANGUAGE_KOREAN )
email을 사용자 이름으로 지정
USERNAME_FIELD = "email" REQUIRED_FIELDS = ["username"]
user admin
list_display, list_filter, fieldsets 통해 어드민 페이지를 꾸밀 수 있다.
list_display = ( "username", "first_name", "last_name", "email", "is_active", "language", "currency", "superhost", "is_staff", "is_superuser", )
config.settings에서 커스텀 user model 등록하기
config/settings.py에는 INSTALLED_APPS가 있는데 나는 개인적으로
DJANGO_APPS = [] THIRD_PARTY_APPS = [] PROJECT_APPS = []
를 만들고
- DJANGO_APPS에는 Django가 기본적으로 제공하는 것들
- 서드파티에는 설치한 라이브러리 등
- 프로젝트앱에는 나의 애플리케이션을 넣어둔다
DJANGO_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] THIRD_PARTY_APPS = [ "django_countries", "django_seed", ] PROJECT_APPS = [ "core.apps.CoreConfig", "users.apps.UsersConfig", "rooms.apps.RoomsConfig", "reviews.apps.ReviewsConfig", "reservations.apps.ReservationsConfig", "lists.apps.ListsConfig", "conversations.apps.ConversationsConfig", ]
INSTALLED_APPS = DJANGO_APPS + PROJECT_APPS + THIRD_PARTY_APPS
AUTH_USER_MODEL = "users.User"
settings.py 하단에 AUTH_USER_MODEL을 추가해서 나의 커스텀 유저 모델을 연결한다.
python manage.py makemigrations
python manage.py migrate