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 |