Westagram #2

chaerin·2021년 2월 8일
0

Westagram

목록 보기
2/5

회원가입 엔드포인트

사용자 테이블 생성

models.py에 사용자를 관리할 클래스를 생성한다.
회원정보로 사용자이름, 이메일주소, 비밀번호, 폰번호가 저장되므로 네가지 속성을 만들었다.

이 중 이메일주소는 중복을 허용하지 않는 값이어서 unique=True을 주었다.

회원가입 뷰 작성

  • 회원가입 할 때 사용자 계정(이메일), 비밀번호 필수
  • 이메일이나 패스워드 키가 전달되지 않았을 시, {"message": "KEY_ERROR"}, status code 400 을 반환한다.
  • 회원가입시 이메일을 사용할 경우, 이메일에는 @.이 필수로 포함되어야 한다. 해당 조건이 만족되지 않을 시 적절한 에러를 반환해준다. 이 과정을 email validation이라고 한다.
  • 회원가입시 비밀번호는 8자리 이상이어야 한다. 해당 조건이 만족되지 않을 시 적정한 에러를 반환해준다. 이 과정을 password validation이라고 한다.
  • 회원가입시 서로 다른 사람이 같은 전화번호나 사용자 이름, 이메일을 사용하지 않으므로 기존에 존재하는 자료와 중복되어서는 안된다. 적절한 에러 반환하기
  • 회원가입이 성공하면 {"message": "SUCCESS"}, status code 200을 반환한다.
  • [추가 구현 사항] email validation 또는 password validation 과정에서 정규식을 사용해보자

모듈 import

< python 모듈 >
json : python 객체를 JSON 데이터로 만들어 쓰기 위한 모듈
re : 정규표현식을 사용하기 위한 모듈

< django 모듈 >
JsonResponse : response를 커스터마이징하여 전달하고 싶을 때
View : as_view() 메소드가 정의되어 있는 클래스로 요청을 받아서 응답을 반환해주는 호출 가능한 객체이다.

< 내가 만든 클래스 >
해당 위치에 있는 models 파일에서 Account 클래스 사용

☼ 모듈을 import 하는 순서 및 규칙☼
1. python 모듈
2. django 모듈
3. 내가 만든 클래스


➣ 회원가입을 위한 클래스를 만들어주고 회원가입은 정보를 생성하는 것이므로 post 함수를 사용할 것이다.

➣ 예외 처리를 위해 try except를 사용한다.

try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드

data라는 변수에 클라이언트에서 보내는 정보를 담게 된다.

requestbody에 있는 JSON 포맷 데이터를 json.loads()로 Python 객체로 읽어온다.

if email and password:				# email과 password 존재 여부 판단
  email_form = re.compile('^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
  # email 주소 검사 정규식
  
  if not email_form.match(str(email)):		# 이메일 주소 검사 정규식을 따르고 있는지 확인
    return JsonResponse({'MESSAGE': 'INVALID_EMAIL'}, status=400)
    # 규칙에 어긋난 이메일이 입력받아지면 에러 반환
    
  if len(password) < MINIMUM_PASSWORD_LENGTH:	# 패스워드 글자수가 8자 이상인지 확인
    return JsonResponse({'MESSAGE': 'PASSWORD_IS_SHORT'}, status=400)
    # 8자 이하의 패스워드 입력을 받았을 때 에러 반환
    
  if Account.objects.filter(email=data['email']).exists():	
  # 입력받은 이메일주소가 이미 존재하는 이메일인지 확인
    return JsonResponse({'MESSAGE': 'ALREADY_USE'}, status=400)
    # 이미 존재하는 이메일이라면 에러 반환
  
  user_data = Account.objects.create(		# 어떤 에러도 발생하지 않았을 때 데이터 생성
      username  = username,
      email.    = email,
      password  = password,			# 미션3에서 암호화 할 것
      phone_num = phone_num
      )
  return JsonResponse({'MESSAGE': 'SUCCESS'}, status=200) # 성공 메시지 및 코드 반환
  
return JsonResponse({'MESSAGE': 'KEY_ERROR'}, status=400)
# email이나 password 중 어떤 것이라도 키 값을 받지 못했을 때 에러 반환

정규표현식 만드는 법 참고 : https://dojang.io/mod/page/view.php?id=2439

0개의 댓글