如何正确更新Django中的用户个人资料

时间:2019-08-18 18:24:43

标签: django

我创建了一个表单来更新django配置文件,我使用默认的用户模型,当我提交表单并注销并尝试再次登录时,新密码不起作用,而旧密码却有效。 这是我的更新视图:

def edit_profil_to_base(request):
    if not request.user.is_authenticated:
        return redirect('authentification')
    else:
        nom_profil_new = request.POST.get('nom_profil')
        nom_profil_old = request.user.username
        old_mdp = request.POST.get('old_mdp')  # type: object
        new_mdp = request.POST.get('new_mdp')
        final_mdp = request.POST.get('final_mdp')
        mdp = request.user.set_password(new_mdp)
        if request.user.check_password(old_mdp) and new_mdp == final_mdp:
            User.objects.filter(username=nom_profil_old).update(username=nom_profil_new, password=mdp)
        logout(request)
        return redirect('authentification')

new_mdpfinal_mdp是新密码和密码确认

1 个答案:

答案 0 :(得分:0)

您需要使用set_password。您无法通过update进行此操作,但是您不需要:您已经有了实际的对象request.user

user = request.user
if user.check_password(old_mdp) and new_mdp == final_mdp:
    user.username = nom_profil_new
    user.set_password(mdp)
    user.save() 

但是,您确实应该对所有这些都使用ModelForm。