Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Class
- docker
- 파이썬
- AWS
- S3
- MongoDB
- wetube
- merge
- dict
- flask
- crud
- Vue
- Props
- RDS
- SAA
- node
- lambda
- 카톡
- 중급파이썬
- async
- react
- 튜플
- 채팅
- SSA
- socket io
- NeXT
- TypeScript
- git
- pandas
- EC2
Archives
- Today
- Total
초보 개발자
django passwordchange with Form View 본문
django를 사용해서 password change 기능을 만들어 보려고한다.
기본적으로 django는 form과 view에서 기능을 제공해주고있다. 나도 쓰는 방법을 잘 모르지만,
먼저 기본적으로 Form을 만들어 주었다.
from django.contrib.auth.forms import PasswordChangeForm
class PasswordForm(PasswordChangeForm):
old_password = forms.CharField(
widget=forms.PasswordInput(
attrs={"placeholder": "Present Password"},
)
)
new_password1 = forms.CharField(
widget=forms.PasswordInput(attrs={"placeholder": "Change Password"})
)
new_password2 = forms.CharField(
widget=forms.PasswordInput(attrs={"placeholder": "Change Password Confirm"})
)
def clean(self):
old_password = self.cleaned_data.get("old_password")
new_password1 = self.cleaned_data.get("new_password1")
if old_password == new_password1:
self.add_error(
"old_password",
forms.ValidationError("it is same old password with new one"),
)
else:
return self.cleaned_data
PasswordChangeForm을 상속하여 PasswordForm을 생성한 뒤에 거기안에 old_password, new_password1, new_password2를 정의한다. 이름을 꼭 같게 해주어야한다. 기본적으로 PasswordChangeForm안에 내장되어있는 프로퍼티들 같다. 단순히 여기선 placeholder만 넣어주었다. class를 추가해주어 tailwind css기능도 사용해줄 수 있다.
그리고 clean함수를 사용하여 각 값을 받아온 뒤 만약 기존 비번이랑 신규 비번과 같다면 같다는 메시지를 보내주자.
그 다음 PasswordChangeView를 상속한 View를 만들고 template_name, form_class, success_url을 지정해준 뒤 form_valid 메서드를 오버라이딩 해주었다. 비밀번호가 성공적으로 바뀌었다는 메시지를 출력해주고 있다.
'Python > airbnb 클론' 카테고리의 다른 글
django edit-room with UpdateView (0) | 2022.03.16 |
---|---|
django class mixins (0) | 2022.03.15 |
django user-editprofile with UpdateView (0) | 2022.03.15 |
django userProfile with DetailVeiw (0) | 2022.03.15 |
django message (0) | 2022.03.14 |