简体   繁体   中英

Password not changing of user

So I'm trying to change the password of the user via a form but it never changes, It says password changed but it always stays the same.

views.py

@login_required
def userchange(request):
    if request.method == 'POST':
        user = request.user
        old_password = request.POST['Old password']
        new_password1 = request.POST['New password1']
        new_password2 = request.POST['New password2']
        print(new_password1)
        print(new_password2)
        if user.check_password(old_password):
            if new_password1 == new_password2:
                if new_password1 == "" or new_password2 == "":
                    return render(request, 'main/change.html', {'error':'Your new passwords are empty!'})
                else:
                    User.objects.get(username=request.user.username).set_password(new_password1)
                    logout(request)
                return render(request, 'main/change.html', {'error':'Your password has been changed succesfully!'})
            else:
                return render(request, 'main/change.html', {'error':'Your new passwords do not match'})
        else:
            return render(request, 'main/change.html', {'error':'Your old password is incorrect'})
    elif request.method == "GET":
        return render(request, 'main/change.html')

change.html

<h1>Note: You will be logged out</h1>
<h2>{{ error }}</h2>
<form method="POST">
    {% csrf_token %}
    <input type="password" placeholder="Old password" name="Old password">
    <input type="password" placeholder="New password" name="New password1">
    <input type="password" placeholder="Confirm password" name="New password2">
    <button type="submit">Change password</button>
</form>

You have changed password but not saved. So:

@login_required
def userchange(request):
    if request.method == 'POST':
        user = request.user
        old_password = request.POST['Old password']
        new_password1 = request.POST['New password1']
        new_password2 = request.POST['New password2']
        print(new_password1)
        print(new_password2)
        if user.check_password(old_password):
            if new_password1 == new_password2:
                if new_password1 == "" or new_password2 == "":
                    return render(request, 'main/change.html', {'error':'Your new passwords are empty!'})
                else:
                    user = User.objects.get(username=request.user.username)
                    user.set_password(new_password1)
                    
                    logout(request)
                return render(request, 'main/change.html', {'error':'Your password has been changed succesfully!'})
            else:
                return render(request, 'main/change.html', {'error':'Your new passwords do not match'})
        else:
            return render(request, 'main/change.html', {'error':'Your old password is incorrect'})
    elif request.method == "GET":
        return render(request, 'main/change.html')

Changing passwords

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM