You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中自动修改密码无法保存,求助解决方案

Django用户密码无法保存的排查与解决

先看你代码里的几个关键问题,逐个修正:

  • 变量未定义/拼写错误:你直接使用了datax但没给它赋值,代码里只有data = form.cleaned_data,如果是要从表单拿邮箱,得补上datax = data["email"](前提是表单里的邮箱字段名是email)。datax未定义的话,要么代码报错中断,要么拿不到正确的用户对象,密码自然存不进去。

  • 未处理用户不存在的异常:User.objects.get(email=datax)如果找不到对应用户会抛出User.DoesNotExist,直接导致后续保存代码执行失败。可以用get_object_or_404快速处理,或者加try-except块捕获异常:

    from django.shortcuts import get_object_or_404
    
    # 替换原获取用户的代码
    us = get_object_or_404(User, email=datax)
    

    或者手动捕获异常:

    try:
        us = User.objects.get(email=datax)
    except User.DoesNotExist:
        # 这里加用户不存在的处理逻辑,比如返回错误提示
        pass
    
  • 确认表单字段有效性:检查表单里是否确实有password字段,打印data看看cleaned_data里的键值对是否正确,确保data["password"]能拿到有效的新密码。

修正后的完整示例:

data = form.cleaned_data
passw = data["password"]
# 补充邮箱字段的获取,根据你表单的实际字段名调整
datax = data["email"]
print(datax)
try:
    us = User.objects.get(email=datax)
    us.set_password(passw)
    us.save()
    print("密码已成功更新")
except User.DoesNotExist:
    print("未找到该邮箱对应的用户")

set_password()会自动哈希密码,只要前面的用户对象正确、字段取值无误,save()就能把修改同步到数据库。

内容的提问来源于stack exchange,提问作者MohammadAminGHS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:40:05