ValueError:没有足够的值来使用Django解包(预期值为4,实际值为3)

2024-10-03 23:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Django check_password()得到了这个错误,在数据库中我使用hash密码存储了make_password()导入的必需语句

from django.contrib.auth.hashers import make_password,check_password

给行错误为

password = check_password(pas, fetchRes[0][3])

这是我的密码

def signin(request):
    res=""
    login_failed = False
    conn = sql.connect(host="localhost",user="root",password="",database="agroxpert")
    cur = conn.cursor()
    if request.method=="POST":
        met=request.POST
        aid=met['aid']
        pas=met['pas']
        inp=(aid,)
        cur.execute('''SELECT * from admin where AID=%s''',inp)
        fetchRes = cur.fetchall()
        password = check_password(pas, fetchRes[0][3])
        if password and len(fetchRes) == 1:
            request.session['FID']=aid
            login_failed = False
            conn.commit()
            conn.close()
            return HttpResponseRedirect('administration/')
        else:
            login_failed = True

            res = "Unable to Signin Password or Admin Id entered is incorrect"
            print(res)
    return render(request,'admin.html',{"res":res,"failed":login_failed})

以下是错误:

内部服务器错误:/sign 回溯(最近一次呼叫最后一次): 文件“C:\Users\LENOVO\project\env\lib\site packages\django\core\handlers\exception.py”,第47行,在内部 响应=获取响应(请求) 文件“C:\Users\LENOVO\project\env\lib\site packages\django\core\handlers\base.py”,第181行,在get\U响应中 响应=包装的回调(请求,*回调参数,**回调参数) 文件“C:\Users\LENOVO\project\AgroXpert\login\views.py”,第91行,登录 密码=检查密码(pas,fetchRes[0][3]) 文件“C:\Users\LENOVO\project\env\lib\site packages\django\contrib\auth\hasher.py”,第49行,检查密码 必须更新=哈希值已更改或首选。必须更新(编码) 文件“C:\Users\LENOVO\project\env\lib\site packages\django\contrib\auth\hasher.py”,第272行,必须更新 算法,迭代,salt,hash=encoded.split(“$”,3) ValueError:没有足够的值来解包(预期值为4,实际值为3)


Tags: 文件djangopyproject密码requestchecklogin