이전에는 PasswordResetView
/ PasswordResetDoneView
/ PasswordResetConfirmView
/ PasswordResetCompleteView
를 통해 간단하게 구현해냈다. 또한, 아이디를 까먹었을 때 이메일로 아이디를 보내주는 것을 구현하기도 했었다. 그렇다면 이번에는 로그인 된 상태에서 비밀번호를 바꾸는 것을 한번 구현해보도록 하겠다.
해당 부분은 여기에서 찾아볼 수 있다.
urls.py 수정하기
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
urlpatterns = [
...
path('change_password/', auth_views.PasswordChangeView.as_view(), name="password_change"),
path('password_change_done/', auth_views.PasswordChangeDoneView.as_view(), name="password_change_done"),
...
]
urls.py
에 다음과 같은 두 path
를 추가해준다. 이는 기존에 Django
에서 제공해주는 Authentication Views
를 사용하는 것으로, 조금 ugly한 html template
을 불러오지만, 우리가 지금 하려는 목적에는 알맞는 것이라 그대로 사용하도록 하겠다. (물론 다른 template
을 사용하고 싶다면 as_view()
의 괄호 안에 template_name='app/...' 과 같은 형식을 쓸 수 있다.
)
또한, 우리가 가지고 있던 기존의 계정 template
에 다음과 같은 버튼을 추가해주자:
<div class="card card-body">
<a class="btn btn-primary" href="{% url 'password_change' %}">Change Password</a>
</div>
password_change
로 사용하는 이유는 우리가 urls.py
에서 name
을 그렇게 정의했기 때문이다. 우리가 이미 로그인된 상태로, 이 '계정 화면'의 이 버튼을 누르게 된다면, 다음과 같은 화면으로 넘어가게 된다:
앞서 얘기했듯이, 이 template
을 바꾸려고 한다면, 다른 html template
을 스스로 만들어서 사용하는 방법이 있다. 다음으로, 우리가 이 화면에 정의된 input box
들에 제대로 입력하고 CHANGE MY PASSWORD
버튼을 누른다면, 또 다음과 같은 화면을 볼 수 있다:
이 화면도 우리가 따로 정의하면 다른 예쁜 화면으로 꾸밀 수 있다.
간단하게 사용자의 기존 비밀번호를 바꾸는 방법에 대해서 알아보았다. 다음 포스틷이 될 Password Change 구현하기 - (2) 에서는 Django
의 기본 Authentication Views
를 사용하지 않는, 모두 manually 해보는 것을 해보도록 하겠다.
'Django 공부하기' 카테고리의 다른 글
<Django 공부하기> 로그인 이후 특정 페이지로 Redirect하기 (0) | 2020.12.02 |
---|---|
<Django 공부하기> 웹사이트 slug 추가하기 (0) | 2020.11.30 |
<Django 공부하기> @property decorator 알아보기 (0) | 2020.11.18 |
<Django 공부하기> 회원탈퇴 구현하기 (2) - 본인인증 후 회원탈퇴 (Deleting User After Authentication) - cleaned_data / widgets / (0) | 2020.11.16 |
<Django 공부하기> templates 폴더를 Root Directory에 정의하기 (templates 폴더를 apps 폴더 안에서 찾게 하지 않기) (0) | 2020.11.13 |