Django 2부 - 사용자 정의 사용자 모델 생성

3250 단어 djangopython
사용자가 계정을 등록하고 로그인할 때 사용할 사용자 정의 사용자 클래스를 만들 것입니다. 초기 데이터베이스 마이그레이션을 실행하기 전에 이 작업을 수행하는 것이 훨씬 쉽고 나중에 모델을 쉽게 조정할 수 있습니다.

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 끝점을 생성합니다.

좋은 웹페이지 즐겨찾기