users application

GisangLee·2021년 12월 11일
0
post-thumbnail

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을 추가해서 나의 커스텀 유저 모델을 연결한다.

항상 모델을 작성하고 나면 migration 진행하자

python manage.py makemigrations
python manage.py migrate
  • migration은 최소화할 수록 좋다.
  • 즉, 처음부터 설계를 잘해서 개발해야 된다.
profile
포폴 및 이력서 : https://gisanglee.github.io/web-porfolio/

0개의 댓글