훈훈훈
파이썬(Django) :: 회원가입 시 입력 값 검증 함수 본문
이번에는 회원가입 시 입력 값을 체크하는 함수를 정리하려고 한다.
먼저, 회원가입 시 이메일과 패스워드만 입력 받는다는 가정하에 진행하려고 한다.
아래 코드를 살펴보면 validate_special_char는 이메일 입력 값을 그리고 validate_password 는 패스워드 입력 값을 검증하는 함수이다.
이메일 검증을 하는 함수 이름에 char 단어를 넣은 이유는 해당 함수는 실행 시키기 이전에 이메일 형식인지 검증해주는 모듈을 먼저 실행 시킨 후 해당 함수를 이용해 @ 앞에 있는 입력 값에 대한 검증을 진행할 목적으로 만들었기 때문이다.
해당 함수를 살펴보면 정규표현식으로 알파벡 소(대)문자 그리고 숫자 이외에는 허용하지 못하도록 작성하였다.
그 다음 패스워드를 검증하는 validate_special_char 함수를 살펴보면 lambda를 사용하여 대문자, 소문자 그리고 숫자를 포함하여 10자리 이상인지를 검증한다. 추가적으로 패스워드에 공백입력은 허용하지 않았다.
def validate_special_char(email):
check_element = email.split("@")[0]
return bool(re.search("[^a-zA-Z0-9]", check_element))
def validate_password(password):
validate_condition = [
lambda s: any(x.isupper() for x in s),
lambda s: any(x.islower() for x in s),
lambda s: any(x.isdigit() for x in s),
lambda s: len(s) == len(s.replace(" ","")),
lambda s: len(s) >= 10
]
for validator in validate_condition:
if not validator(password):
return True
위에 작성한 함수를 아래와 같이 Django에서 적용할 수 있다.
이메일 검증을 하는 validate_email 모듈을 사용하여 1차적으로 검증 후 위 함수르 2차 검증을 진행하였다.
from django.core.validators import validate_email
validate_email(data["email"])
if validate_special_char(data["email"]):
return JsonResponse({"message" : "INVALID_CHAR"}, status=400)
if validate_password(data["password"]):
return JsonResponse({"message" : "INVALID_PASSWORD"}, status=400)
* 관련 글
- 간단한 회원가입/로그인 예제
- 회원가입/로그인 + 암호화,토큰
- 회원가입/로그인 입력 값 필터
- 이메일 인증
- 유닛 테스트
'파이썬 > Django' 카테고리의 다른 글
파이썬(Django) :: Django-Crontab 정리 (0) | 2020.04.18 |
---|---|
파이썬(Django) :: Select_related 와 Prefetch_related (0) | 2020.04.13 |
파이썬(Django) :: 회원가입 시 이메일 인증 API (1) | 2020.03.21 |
파이썬(Django) :: 데이터베이스에 csv파일 삽입하기 (0) | 2020.03.07 |
파이썬(Django) :: migrations 파일 정리 CLI Command (0) | 2020.02.29 |
Comments