def confirm(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
data = serializer.validated_data
try:
key, pk = data['key'].rsplit(':', 1)
user = self.get_queryset().get(pk=pk)
assert md5(user.username).hexdigest() == key
except (TypeError, AssertionError, ValueError, get_user_model().DoesNotExist) as e:
raise ValidationError('???????? ????')
if data['new_password'] != data['new_password_confirm']:
raise ValidationError('????? ?????? ?? ?????????')
user.set_password(data['new_password'])
user.save()
return Response(status=status.HTTP_204_NO_CONTENT)
评论列表
文章目录