Django - Изменение пароля пользователя путем кодирования

Я пытаюсь дать разрешение на изменение пароля для вошедшего пользователя. кодировка следующая. результат приходит как пароль был изменен, но пароль не установлен.

Примечание: шаблон имеет три текстовых поля

  1. "old" для текущего пароля
  2. "password" для нового пароля
  3. "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
Вернуться на верх