Django 2부 - 사용자 정의 사용자 모델 생성
users/models.py 파일에서 사용자 정의 사용자 모델을 정의합니다. 모델에는 사용자 이름, 이메일 및 비밀번호와 같은 모든 기본 사용자 모델 필드가 있습니다. 또한 선택적 name 필드와 기본적으로 False로 지정되고 사용자가 이메일을 확인하면 True로 업데이트되는 email_verified 필드를 추가하고 있습니다.
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
name = models.CharField(max_length=100, null=True, blank=True)
email_verified = models.BooleanField(default=False)
새로 생성된 CustomUser 모델을 인증에 사용할 수 있도록 settings.py 파일을 업데이트해야 합니다.
AUTH_USER_MODEL = 'users.CustomUser'
서버를 다시 시작하기 전에 데이터베이스 마이그레이션을 실행해야 합니다. 우리는 manage.py 스크립트를 사용하여 데이터베이스 마이그레이션을 생성하고 실행합니다.
py manage.py makemigrations
py manage.py migrate
Django는 http://127.0.0.1:8000/admin에서 액세스할 수 있는 미리 만들어진 관리 기능과 함께 제공됩니다.
거기에 로그인하려면 manage.py 스크립트를 사용하여 수행할 수 있는 슈퍼 사용자 계정을 만들어야 합니다.
py manage.py createsuperuser
지침에 따라 사용자 이름, 이메일 및 암호를 입력한 다음 http://127.0.0.1:8000/admin의 관리 사이트로 이동합니다.
이제 방금 만든 자격 증명을 사용하여 로그인할 수 있습니다.
관리 사이트에서 모든 데이터베이스 모델과 인스턴스를 볼 수 있습니다.
일반적으로 사용자 모델을 볼 수 있지만 현재는 자체 사용자 지정 사용자 모델을 만들었기 때문에 그룹 모델만 볼 수 있습니다. 관리 사이트에서 사용자 모델을 보기 위해 사용자 정의 관리 클래스를 작성할 것입니다.
그 전에 User 인스턴스를 만들고 업데이트할 수 있도록 admin 클래스에서 사용할 몇 가지 양식을 만들 것입니다.
사용자 디렉토리 내에 새 파일(forms.py)을 만듭니다.
사용자/forms.py에서:
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class meta(UserCreationForm):
model = CustomUser
fields = UserCreationForm.Meta.fields + ('name',)
class CustomUserChangeForm(UserChangeForm):
class meta(UserChangeForm):
model = CustomUser
fields = UserChangeForm.Meta.fields
그런 다음 users/admin.py 파일에서 사용자 정의 admin 클래스를 생성하고 이를 admin 사이트에 등록합니다.
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser
from .forms import CustomUserChangeForm, CustomUserCreationForm
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = [
'email',
'username',
'name',
'is_staff',
'email_verified'
]
fieldsets = UserAdmin.fieldsets + ((None, {"fields": ("name",)}),)
add_fieldsets = UserAdmin.add_fieldsets + ((None, {"fields": ("name",)}),)
admin.site.register(CustomUser, CustomUserAdmin)
이제 관리 사이트에 로그인하면 로그인한 사용자 모델과 사용자 인스턴스를 볼 수 있습니다.
자습서의 다음 부분에서는 이메일 주소를 등록, 로그인 및 확인하기 위한 API 끝점을 생성합니다.
Reference
이 문제에 관하여(Django 2부 - 사용자 정의 사용자 모델 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/willp11/django-part-2-creating-a-custom-user-model-3a8a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)