[Westagram]Mission 3:会員収入


[タスク3]会員加入機能の実施


会員入金機能を実現するためにtry,exception文を使用して条件を指定し,条件に合致しない場合はtry,exceptionを作成した.
Eメールには@.が必要です.パスワードには8桁以上の文字、アルファベット、数字、特殊文字が必要です.入力したemal/passwordと比較して、条件を満たさない場合はValidaton Errorを作成します.
REGEX_EMAIL    = r'^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
REGEX_PASSWORD = r'^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$'

class SignUpView(View) :
    def post(self, request) :

        try:
            data     = json.loads(request.body)
            email    = data['email']
            password = data['password']

            if not re.match(REGEX_EMAIL, email) :
                raise ValidationError('email format is not valid')

            if not re.match(REGEX_PASSWORD, password) :
		raise ValidationError('password format is not valid') 
会員登録時に異なる人が同じEメールを使用しないため、フィルタを使用して新しく入力したEメールをデータベース内のEメールと比較し、ValidationErrorが存在することを確認します.
if User.objects.filter(email = email).exists() :
	raise ValidationError('Email already exists')
会員が加入に成功すると、名前、電子メール、パスワード、連絡先(携帯電話)、ニックネームが作成され、成功メッセージおよびステータスコード201が返される.
           User.objects.create(
                name     = data['name'],
                email    = data['email'],
                password = data['password'],
                phone    = data['phone'],
                nickname = data.get('nickname', '')
            )

            return JsonResponse({"message" : "SUCCESS"}, status=201)  
Eメールまたはパスワードが送信されていない場合は、KEYERORメッセージとstatus code 400が返されます.
except KeyError :
	return JsonResponse({"message" : "KEY_ERROR"}, status = 400) 
        
ValidationErrorの場合、as e:転送のために各状況にメッセージを作成します.
except ValidationError as e :
	return JsonResponse({"message" : e.message}, status = 400) 
完全なコードは次のとおりです.

正規表現で比較した部分を確認します.pyを用いてモジュール化した.validation.py views.py