[파이썬][Django] Django 내장 사용자 모델 사용 방법과 예제

Django는 내장 사용자 모델을 제공하여 사용자 인증 및 관리를 쉽게 할 수 있습니다. 내장 사용자 모델은 django.contrib.auth.models 모듈에 포함되어 있습니다. 아래에서 Django 내장 사용자 모델을 사용하는 방법과 예제를 설명하겠습니다.

내장 사용자 모델 설정

  1. settings.py 파일 설정:

    Django 프로젝트의 settings.py 파일에서 내장 사용자 모델을 설정합니다. 다음과 같이 AUTH_USER_MODEL을 지정합니다.

# settings.py
    
    AUTH_USER_MODEL = 'myapp.CustomUser'
위의 예제에서 `'myapp.CustomUser'`는 사용자 모델을 나타내며, 실제 프로젝트에서 사용하는 모델로 변경해야 합니다.
  1. 사용자 모델 생성:

    사용자 모델을 생성하려면 AbstractBaseUser 또는 AbstractUser를 상속하는 모델 클래스를 만듭니다. AbstractBaseUser를 사용할 경우 사용자 모델을 완전히 커스터마이즈해야 하지만, AbstractUser를 사용할 경우 기본 필드를 포함한 사용자 모델을 확장할 수 있습니다.

    예를 들어, AbstractUser를 사용한 사용자 모델을 만들어보겠습니다.

from django.contrib.auth.models import AbstractUser
    from django.db import models
    
    class CustomUser(AbstractUser):
        # 추가 필드 정의
        phone_number = models.CharField(max_length=15)

사용자 생성 및 인증

이제 내장 사용자 모델을 설정했으므로 사용자를 생성하고 인증할 수 있습니다.

  1. 사용자 생성:

    사용자를 생성하려면 CustomUser 모델을 사용하여 인스턴스를 만들고 create_user 메서드 또는 objects.create 메서드를 사용합니다.

from myapp.models import CustomUser
    
    # 사용자 생성
    user = CustomUser.objects.create_user(username='john', password='password123', phone_number='123-456-7890')
  1. 사용자 인증:

    사용자 인증은 authenticate 함수를 사용하여 진행합니다.

from django.contrib.auth import authenticate, login
    
    # 사용자 인증
    user = authenticate(username='john', password='password123')
    
    if user is not None:
        # 인증 성공
        login(request, user)
    else:
        # 인증 실패
위의 코드에서 `login` 함수는 사용자를 세션에 로그인시킵니다.

이제 Django 내장 사용자 모델을 사용하여 사용자 생성, 로그인, 로그아웃 및 다른 인증 관련 작업을 수행할 수 있습니다. 사용자 모델을 커스터마이즈하면 프로젝트의 요구 사항에 맞게 사용자 데이터를 관리할 수 있습니다.