사용앱 : accounts

 

1. settings.py 수정

INSTALLED_APPS = [
    ...
    'accounts',
]

사용자 계정을 관리할 앱을 생성하여 등록해줍니다.

 

2. account/models.py 생성

from django.contrib.auth.models import AbstractUser
from django.db import models


class CustomUser(AbstractUser):
    phone = models.CharField(max_length=30, blank=True, null=True)

추가하고자하는 필드를 지정합니다.

저는 "phone"으로 지정하였습니다.

 

3. settins.py 수정

AUTH_USER_MODEL = 'accounts.CustomUser'

방금위에서 만든 사용자 모델을 사용하도록 세팅을 해줍니다.

 

 

 

4. accounts/admin.py 수정

from django.contrib import admin

from .models import CustomUser


admin.site.register(CustomUser)

관리자페이지에 사용자 모델을 등록해줍니다.

 

 

5. accounts/serializers.py 생성

from rest_framework import serializers

from allauth.account.adapter import get_adapter
from allauth.account.utils import setup_user_email

from rest_auth.registration.serializers import RegisterSerializer


class CustomRegisterSerializer(RegisterSerializer):
    phone = serializers.CharField(
        required=False,
        max_length=30,
    )

    def get_cleaned_data(self):
        data_dict = super().get_cleaned_data()
        data_dict['phone'] = self.validated_data.get('phone', '')
        return data_dict

 

6. settings.py 수정

REST_AUTH_REGISTER_SERIALIZERS = {
    'REGISTER_SERIALIZER': 'accounts.serializers.CustomRegisterSerializer',
}

위에서 생성한 시리얼라이저를 사용하도록 설정해줍니다.

 

7. 테스트

[서비스 구동]

python manage.py runserver 0.0.0.0:8010

[회원가입]

회원가입시 위와 같이 phone 값에 "01011112222"를 명시하였습니다.

 

[결과확인]

http://192.168.5.99:8010/admin/accounts/

위와 같이 커스터마이징한 모델이 추가된 것을 확인할 수 있었습니다.

 

[출처]: stackoverflow.com/questions/41398949/django-related-model-users-userprofile-cannot-be-resolvedstackoverflow.com/questions/53969386/how-to-save-extra-fields-on-registration-using-custom-user-model-in-drf-django

+ Recent posts