초보 개발자

django password_validator 본문

Python/airbnb 클론

django password_validator

taehyeki 2022. 2. 21. 12:08

UsercreationForm을 사용하면 알아서 이걸 실행시켜주는데 나는 아직 저 Form 사용법을 모르기 때문에

password_validator라는 모듈만 불러와서 우리가 만든 signup form에 적용시켜주려고한다.

 

password_validator란 우리가 10자이상 적어야 하거나, 너무 단순하거나, 숫자로만 이루어져있거나할 때 django가 error메시지를 보내서 사용자에게 제대로 작성하라고 하는 것이다.

users/forms/SignUpForm.clean_passwrod1

clean_password method안에 이거 딱 한줄만 추가해주었다.

 

password_validation 모듈안에 우리가 사용할 validate_password이다.

첫번째인자로 password를 받고, 두번째인자로 user을 받는 것 같다. 근데 기본값이 None이길래 안줘도되는건가?? 싶어서 안줘보았더니 안주어도 작동은 잘 된다.

 

궁금증🔍

안적어주면 기본 AUTH_USER_MODEL에 등록되어있는 user모델을 자동으로 불러오는 건가?

 

3번째 인자에 별도로 validator를 주지 않으면 settings.py에 있는 AUTH_PASSWORD_VALIDATION에 있는 녀석들로 체크하는 것 같다.

settings.py

그렇게 validation을 다 돌고, 에러가 있다면 errors배열에 그 err들을 추가해주고 마지막에 errors 배열을 return 한다.

 

나는 clean_password1에서 저걸 사용해서 바로 사용이 가능한것 같지만 만약 clean함수에서 사용했다면 

try:
 password_validation.validate_password(password, self.instance)
except forms.ValidationError as error;
 self.add_error('password2',error)

이런식으로 password2를콕 찝어 넣어주어야 password칸에 error메시지가 들어갈 것 같다.

 

따라서 저 한줄 코딩만으로 우리는 단순한지, 8자 이하인지, 숫자로만 이루어져있는지를 확인해준다.

다만, 영어로 나오는게 좀 아쉽고, 나도 하나 validator를 만들어 볼 수 있찌 않을까 라는 생각에 조금 수정을해보았다.

 

password_validation.py

2번 적어준 이유는 영어로 되어있을 땐 단수형, 복수형 적혀있던데 한글로 적으면 어떻게 해야할지 몰라서 일단 두개 적었다. 이런식으로 나머지 것들도 한글화 해주고 

 

맨 아래에 나만의 validator를 만들어 주고

password_validation.py

setting.py에도 추가해주면

settings.py

아래와 같이 잘 나타나는 것을 확인할 수가 있다 !

 

좀 어려운 개념이 많아서 겉 핡기 식으로 밖에 할 수 없었다 ㅠㅠ 

'Python > airbnb 클론' 카테고리의 다른 글

django message  (0) 2022.03.14
django login, signup page  (0) 2022.03.13
send email django  (0) 2022.02.18
django sign-up form with model form  (0) 2022.02.16
django sign-up form  (0) 2022.02.16