코딩 개발일지

회원탈퇴 기능 Trouble Shooting / 기술 면접 본문

AI 본 교육/AI 14주차

회원탈퇴 기능 Trouble Shooting / 기술 면접

호기호 2023. 11. 14. 00:05

문제

def delete(self, request):
    if request.data:
        password = request.data.get("password", "")
        auth_user = authenticate(email=request.user.email, password=password)
        if auth_user:
            auth_user.delete()
            return Response({'status': '204', 'error': '회원 탈퇴가 완료되었습니다.'}, status=status.HTTP_204_NO_CONTENT)
        else:
            return Response({'status': '401', 'error': '비밀번호가 불일치합니다.'}, status=status.HTTP_401_UNAUTHORIZED)
    else:
				return Response({'status': '400', 'error': '비밀번호를 입력해주세요.'}, status=status.HTTP_400_BAD_REQUEST)

 

회원탈퇴 기능은 정상적으로 작동하지만, 비밀번호를 입력하지 않으면, 빈 값으로 들어간다.

따라서 request.data가 항상 존재하므로, 400 error는 발생하지 않았다.


해결

def delete(self, request):
	  password = request.data.get("password", "")
	  if not password:
	      return Response({'status': '400', 'error': '비밀번호를 입력해주세요.'}, status=status.HTTP_400_BAD_REQUEST)
	  auth_user = authenticate(email=request.user.email, password=password)
	  if auth_user:
	      auth_user.delete()
	      return Response({'status': '204', 'success': '회원 탈퇴가 완료되었습니다.'}, status=status.HTTP_204_NO_CONTENT)
	  else:
	      return Response({'status': '401', 'error': '비밀번호가 불일치합니다.'}, status=status.HTTP_401_UNAUTHORIZED)

 

password가 빈 값일 때, 400 error가 발생하도록 코드를 수정했다.

빈 값이 아닐 경우는 존재하지 않으므로, else의 경우는 지정해주지 않았다.


인터프리터와 컴파일러에 대해서 설명해주세요. (장단점을 비교)

컴파일러는 전체 파일을 스캔하여 한꺼번에 번역한다. 따라서, 초기 스캔시간이 오래 걸리지만, 한번 실행 파일이 만들어지고 나면 빠르다. 전체 코드를 스캔하는 과정에서 모든 오류를 한꺼번에 출력해주기 때문에 실행 전에 오류를 알 수 있다. 대표적인 언어로 C, C++, JAVA 등이 있다.


인터프리터는 프로그램 실행시 한 번에 한 문장씩 번역한다. 한번에 한문장씩 번역후 실행 시키기 때문에 실행 시간이 느리지만, 프로그램을 실행시키고 나서 오류를 발견하면 바로 실행을 중지 시킨다. 따라서 실행 후에 오류를 알 수 있다. 대표적인 언어로 Python, Javascript 등이 있다.


정적 타입과 동적 타입의 차이에 대해서 설명해주세요. (장단점을 비교)

정적타입 언어는 작성자가 소스 코드를 보고 변수 타입을 직접 작성하는 언어이다. 정적타입 언어에는 C, C#, C++, Java 등의 언어가 있고, 이들 언어는 변수에 들어갈 값의 형태에 따라 자료형을 지정해주어야 한다.
코드의 타입을 직접 작성하기 번거롭지만, 그만큼 가독성이 좋고 안정성이 높고, 실행 속도가 빠르다.


동적타입 언어는 코드를 실행할 때 알아서 변수 타입을 판단해주는 언어이다.동적타입 언어에는 요즘 많이 쓰이는 JavaScript, Python 등의 언어가 있다. 코드 실행시 자동으로 변수의 타입을 판단하기 때문에, 빠른 속도로 작성할 수 있지만, 원하지 않는 타입이 들어올 수도 있고, 변수를 지정해주는 속도 때문에 실행속도가 느리다.