우리는 dashboards 애플리케이션을 구현할 당시 variable routing을 통해 pk정보를 받아서 각 pk에 해당하는 게시글을 삭제했다. accounts에서는 variable routing을 이용하지 않고 로그인을 한 사용자의 정보를 토대로 개인 프로필 수정을 가능하도록 해보자.
역시 django에서 제공하는 updateForm을 상속받아서 사용하도록 하자.
패스 설정 후
UserChangeForm을 상속받아 우리가 쓸 것만 골라서 쓰도록 하자! fields는 우선은 모두 가져오도록 설정했다.
다음과 같이 instance를 넘겨주며 update기능을 완성시켰다! 당연히 forms.py에 있는 CustomUserChangeForm을 import했다.
저장을 눌러보자. 근데 저장이 되질 않는다.게다가 저장 버튼을 누르고 해당 페이지에 머물러있다....반드시 redirect를 써줘야할 것 같은 느낌이다. 프로필을 수정 후 저장한 뒤 본인이 수정한 프로필을 보여주도록 수정해보자!
form.save()
저장을 완료했고, redirect('accounts:detail',request.user.pk)
detail에 로그인한 사용자의 pk값을 넣어 detail페이지로 바로 보내주었다.
사용자가 패스워드를 변경하려고 하면 어떻게 해야될까? django에서 제공하는 Form을 사용하자!
path 설정
PasswordChangeForm을 import하여 사용하자!
from django.contrib.auth.forms import AuthenticationForm, PasswordChangeForm
비밀번호가 변경되면 기존 세션과의 회원 인증 정보가 일치하지 않게 되어 로그인 상태를 유지하지 못하게 된다. 비밀번호는 변경이 잘 되었으나 비밀번호가 변경되면서 기존 세션과의 회원 인증정보가 일치하지 않기 때문이다.
from django.contrib.auth import update_session_auth_hash
마찬가지로 import!