초보 개발자

django passwordchange with Form View 본문

Python/airbnb 클론

django passwordchange with Form View

taehyeki 2022. 3. 15. 15:43

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