我创建了一个表单来更新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_mdp
和final_mdp
是新密码和密码确认
答案 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。