def post(self, request):
        serializer = SignupSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()

            user = get_object_or_404(User, email=request.data["email"])

            secured_key = RefreshToken.for_user(user).access_token
            expired_at = datetime.fromtimestamp(secured_key['exp']).strftime("%Y-%m-%dT%H:%M:%S")

            ConfirmEmail.objects.create(secured_key=secured_key, expired_at=expired_at, user=user)

            frontend_site = "www.gaggamagga.shop" 
            absurl = f'https://{frontend_site}/confirm_email.html?secured_key={str(secured_key)}'
            email_body = '안녕하세요!' + user.username +"고객님 이메일인증을 하시려면 아래 사이트를 접속해주세요 \\n" + absurl
            message = {'email_body': email_body,'to_email':user.email, 'email_subject':'이메일 인증' }
            Util.send_email(message)

            return Response({"message":"회원가입이 되었습니다."}, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class Util:
    @staticmethod
    def send_email(message):
        email = EmailMessage(subject=message['email_subject'], body=message['email_body'], to=[message['to_email']])
        EmailThread(email).start()
  1. SignupSerializer에서 데이터가 유효한지 확인 후 저장함
  1. User의 이메일을 찾아 유저의 RefreshToken(simplejwt)로 secured_ket를 생성한다. 생성하는 이유는? secured_key로 인증하기 위해서이다. expired_at은 토큰 값으 만료시간을 나타내기 위해서이다. (datetime.fromtimestamp 관련)
  2. ConfrimEmail 모델에 저장한다.
  3. 이메을 보내줄 내용과 제목과 보낼 사람을 적는다.
  4. utils.py에 작성한 이메일 발송 함수에 맞게 값을 넣어 보낸다.