티스토리 뷰

728x90
반응형

 

 

 

장고에서는 비밀번호를 변경하는 PasswordChangeForm을 지원합니다.

views.py에서 PasswordChangeForm을 프론트로 전달해주고, 프론트에서 폼을 확인해봅시다.

from django.contrib.auth.forms import PasswordChangeForm

def mypage(request):
	form = PasswordChangeForm(request.user, request.POST)
	return render(request, "mypage.html", {"form":form})

 

mypage.html에서는 {{form}}을 원하는 곳에 넣어주면 되구요.

기본적으로 아래와 같이 현재 비밀번호, 변경할 비밀번호, 비밀번호 확인 input이 있습니다.

 

 

사용자가 비밀번호를 변경하러 들어왔을 때(GET)는 위의 PasswordChangeForm을 전달해주고,

비밀번호를 변경했을 때(POST)는 사용자가 입력한 값들을 가져와 비밀번호를 변경해주면 되겠습니다.

 

from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm

def mypage(request):
	if request.method == 'POST':
		# 비밀번호 변경 폼 확인
		form = PasswordChangeForm(request.user, request.POST)
		if form.is_valid():
			user = form.save()
			update_session_auth_hash(request, user) # 세션을 업데이트해서 로그인 유지
			...
    else:
    	form = PasswordChangeForm(request.user, request.POST)
		...

 

 

728x90
반응형
댓글