models.py
에 사용자를 관리할 클래스를 생성한다.
회원정보로 사용자이름, 이메일주소, 비밀번호, 폰번호가 저장되므로 네가지 속성을 만들었다.
이 중 이메일주소는 중복을 허용하지 않는 값이어서 unique=True
을 주었다.
@
와 .
이 필수로 포함되어야 한다. 해당 조건이 만족되지 않을 시 적절한 에러를 반환해준다. 이 과정을 email validation이라고 한다.< 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
라는 변수에 클라이언트에서 보내는 정보를 담게 된다.
request
의 body
에 있는 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