class SignUpView(View):
def post(self, request):
signup_data = json.loads(request.body)
try:
if User.objects.filter(email=signup_data['email']).exists():
return HttpResponse(status=409)
User.objects.create(
name=signup_data['name'],
email=signup_data['email'],
password=signup_data['password'],
phone=signup_data['phone']
)
return HttpResponse(status=200)
except KeyError:
return JsonResponse({'message':'KEY_ERROR'}, status=400)
-> 이전에 실습하면서 만들었던 여러 자료들을 참고로 어찌저찌 구색을 갖춘 회원가입 views.py를 만들었다.
-> .filter().exists() 로 True, False 를 검사할 수 있다는것을 알았다.
-> (request.body) 가 어떤 의미를 갖고 있는지 몰랐는데, 나중에 FE에서 입력값을 보낼 때 그 값을 받는 곳이라고 한다.
class SignUpView(View):
def post(self, request):
data = json.loads(request.body)
regex_email = '[a-zA-Z0-9]+\.?\w*@\w+[.]?\w*[.]+\w{2,3}'
regex_password = '(?=.*[A-Za-z])(?=.*\d)(?=.*[~!@#$^&*()+|=])[A-Za-z\d~!@#$%^&*()+|=]{8,}'
try:
# email과 password가 비어있는 경우
if data['email'] == '' or data['password'] == '':
return JsonResponse({'message':'Email or Password is Blank'}, status = 400)
# email 중복된 경우
elif data['email'] in [i.email for i in User.objects.all()]:
raise JsonResponse({'message' : 'Email Reduplication'}, status=400)
# email과 password가 정규식과 불일치한 경우
elif re.match(regex_email, data['email']) is None or re.match(regex_password, data['password']) is None:
raise ValueError
except ValueError:
return JsonResponse({'message' : 'KEY_ERROR'}, status=400)
else:
User.objects.create(
name = data['name'],
email = data['email'],
password = data['password'],
address = data['address'],
information = data['information']
)
return JsonResponse({'message':'SUCESS'},status=201)
-> 아직은 컨벤션을 신경쓰지않고 class 를 완성하는 것에 집중했다.
-> 정규표현식이 내가 보기엔 거의 상형문자 급이라 적어놓고 외워야할 것 같다.(적용한 정규표현식은 구글링 작품)
-> raise 로 Error를 일으켜서 except로 특정한 다음, 원하는 메세지로 출력하는 방법을 깨우친 것은 며칠 후의 이야기다.
-> 초기 세팅과 git 사용은 충분히 숙지되어서 꽤 자신이 붙었다. 별다른 실수나 에러도 없이 무난히 git을 사용하고, 세팅도 막힘은 없었다.
-> 다만, view에서 2개의 class 를 만들었지만, 내 스스로의 지분은 5%도 안되는 것 같다.(구글 70%, 동기 25%)
-> git push 를 통해 멘토님들에게 수정사항 받는 것이 즐겁다. 컨벤션 관련 수정 사항은 줄여나가는 재미가 있었다.