[django][westagram] Mission2 SignUpView 구현

Hyeseong·2020년 12월 30일
0

westagram

목록 보기
1/3

문제🧐

나의 View😂

validation of email, password

~ヾ( ̄▽ ̄) 아래 소스코드를 짠다고 얼마나 많은 시간을 쏟아 부었는지.
물론 무에서 유를 창조할 능력이 없는 나로서는 구글링 하며 여기 저기 짜집기식으로 한거지만 그것 마저도 힘든 나!

힘내서 한걸음 한걸음 나아가면 언젠간 고지가 보일듯.

import json
import re
from django.http  import JsonResponse
from django.views import View

from user.models  import User

class SignUpView(View):

    def post(self, request):
        try:
            data = json.loads(request.body)
            email = data['email']
            password = data['password']
            MIN_LEN_PWD = 8

                    
            p = re.compile('^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')

            if not email and password: 
                return JsonResponse({'MESSAGE':'KEY_ERROR'}, status=400)
            
            if len(password) < MIN_LEN_PWD: 
                return JsonResponse({'MESSAGE':f'PASSWORD SHOULD BE OVER {MIN_LEN_PWD} CHAR'}, status=400)
 
            if not p.match(email):
                return JsonResponse({'MESSAGE':'EMAIL ERROR.'}, status=400)
            
            if not User.objects.filter(email=email).exists(): 
                User.objects.create(
                                    password=data['password'],
                                    email   =data['email']                               
                                    )
                return JsonResponse({'MESSAGE':'SUCCESS'}, status=201)
            
            return JsonResponse({'MESSAGE':'EMAIL ALREADY EXISTS.'}, status=400)
            
        except User.DoesNotExist:
            return JsonResponse({'MESSAGE':'DOES NOT EXISTS'}, status=400)

        except KeyError:
            return JsonResponse({'MESSAGE':"KEY ERROR OCCUR"}, status=400)


    def get(self, request):
        result = [user_info.name for user in User.objects.all()]
        return JsonResponse({'result':result}, status=200)


예외 처리 확인😏

KEY ERROR 👘

첫 번째 IF 조건이 정상적으로 작동하는지 확인해봤습니다.
매우매우 기분 좋게 400 ERROR 떳네요?!

기분 좋아 져~쓰~~~!

PASSWORD SHOULD BE OVER 8 CHAR 👘

비번 7개 넣고 POST요청하니 오류 발생 해~~~쓰!
기본 좋아 져~쓰~!

EMAIL VALIDATION ERROR 👘

포인트는 뭐다?! @ . 요 두개의 문자가 없으면 안된다는거~!

점(.)이 없을때!!

@ 이 없을때

EMAIL ALREADY EXISTS👘

이미 있는 이메일로 만들겠다고?! 고건 안돼지!

느낀점

  • 정규 표현식에 대한 정리와 연습필요.
  • try except 표현식에 대한 정리와 연습필요.
  • queryset에 대한 정리가 더 필요함.
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글

관련 채용 정보