본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[TIL] django DRF signup

회원가입 기능 구현하기

 

 

AbstraceUser 모델을 상속받아 CustomUser 모델을 정의할 때 email은 유일하도록 그리고 first_name과 last_name은 하나로 합쳐 이름 필드로 만들고 싶었다.

 

상속을 받으면 기본적으로 제공되는 email필드는 오버라이딩 하여 unique=True로 blank=False로 주어 유일하며 필수 입력이 되도록 설정하였고

first_name과 last_name은 None으로 정의하여 나타나지 않도록 해주었다

 

 

# accounts/models.py

class User(AbstractUser):
    GENDER_CHOICES = [
        ("M", "남자"),
        ("W", "여자")
    ]

    first_name = None
    last_name = None

    email = models.EmailField("email_address", unique=True, blank=False)
    name = models.CharField("name", max_length=30)
    nickname = models.CharField("nickname", max_length=20)
    birthday = models.DateField("birthday")

    gender = models.CharField("gender", max_length=1, choices=GENDER_CHOICES, blank=True)
    introduce = models.TextField("introduce", blank=True)

 

 

 

 

 

# accounts/serializers.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = get_user_model()
        fields = "__all__"

 

 

 

 

뷰는 클래스형 뷰를 사용하여 post method를 사용하였을 때 저장이 되도록 하였다

# accounts/views.py

class SignupAPIView(APIView):
    def post(self, request):
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)