Django - Изменение пароля пользователя путем кодирования
Я пытаюсь дать разрешение на изменение пароля для вошедшего пользователя. кодировка следующая. результат приходит как пароль был изменен, но пароль не установлен.
Примечание: шаблон имеет три текстовых поля
- "old" для текущего пароля
- "password" для нового пароля
- "confirm" для подтверждения нового пароля.
def changepassword(request):
if request.method == 'POST':
user = authenticate(request, username=request.user,password=request.POST['old'])
if user is None:
return render(request, 'pmp/changepassword.html', {'error': 'Current Password Enter Mismatch! '})
else:
try:
if request.POST['password'] == request.POST['confirm']:
u = request.user
u.set_password('password')
return render(request, 'pmp/changepassword.html', {'success':'Password has been changed!'})
else:
return render(request, 'pmp/changepassword.html',{'form': AuthenticationForm(), 'error': 'New Password and confirm Password mismatch!'})
except ValueError:
return render(request, 'pmp/changepassword.html',{'form': AuthenticationForm(), 'error': 'Password not changed!'})
return render(request, 'pmp/changepassword.html')
Необходимо вызвать save()
на пользователя после установки пароля, set_password()
не сохраняет новый пароль в БД
u = request.user
u.set_password(request.POST['password'])
u.save() # Add this line