본문 바로가기

BackEnd/Django

[Django] User password Change

class ChangePassword(APIView):

def put(self, request, username, format=None):

user = request.user

if user.username == username :

current_password = request.data.get('current_password',None)

if current_password is not None:
password_match = user.check_password(current_password)

if password_match :
new_password = request.data.get('new_password',None)

if new_password is not None:

user.set_password(new_password)

user.save()

return Response(status = status.HTTP_200_OK)

else :
return Response(status=status.HTTP_400_BAD_REQUEST)
else :
return Response(status=status.HTTP_400_BAD_REQUEST)
else :
return Response(status=status.HTTP_400_BAD_REQUEST)
else :
return Response(status=status.HTTP_401_UNAUTHORIZED)


첫 번째 조건문은


request한 유저의 이름과 url의 유저가 동일한가?


만약 그렇다면 get으로 데이터를 요청받자(형식은 current_password)


아니라면 401


두 번째 조건문은


current_password를 받았다면


user.check_password() => 유저 오브젝트의 메소드 중 하나이며, 인자가 유저 비밀번호와 동일한지 체크하여 True/False 반환


값을 password_match에 넣는다.


세 번째 조건문은


만약 password_match가 True라면


new_password를 받는다.


네 번째 조건문은


패스워드를 받으면


user.set_password() -> 역시 메소드이며 비밀번호 변경해줌


저장한다



from django.urls import path
from . import views

app_name = "users"
urlpatterns = [
path("<username>/password",view=views.ChangePassword.as_view(),name="change_password"),
]


'BackEnd > Django' 카테고리의 다른 글

[Webpack]Setting  (0) 2018.11.10
[Django]User Profile 수정하기  (0) 2018.11.08
[Django] 이미지 삭제하기  (0) 2018.11.08
[Django] 이미지 수정하기!  (0) 2018.11.07
[Django] 좋아요 리스트 보기  (0) 2018.11.07