亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

/account/register 處的 MultiValueDictKeyError

/account/register 處的 MultiValueDictKeyError

三國紛爭 2022-11-09 16:18:52
錯誤:/account/register 'first_name' 處的 MultiValueDictKeyError 請求方法:POST 請求 URL: http: //127.0.0.1 :8000/account/register Django 版本:2.2.7 異常類型:MultiValueDictKeyError 異常值:“first_name”異常位置: C:\Users\Maansi\AppData\Roaming\Python\Python37\site-packages\django\utils\datastructures.py 在getitem中,第 80 行 views.py: def login(request):    if request.method=='POST':        username=request.POST['username']        password=request.POST['password']        user=auth.authenticate(username=username,password=password)        if user is not None:            auth.login(request,user)            return redirect("/")        else:            messages.info(request,'invalid credentials')            return redirect('login')    else:        return render(request,"login.html")def register(request):    if request.method=='POST':        first_name=request.POST['first_name']        last_name=request.POST['last_name']        username=request.POST['username']        password1=request.POST['password1']        password2=request.POST['password2']        email=request.POST['email']        if password1==password2:            if User.objects.filter(email=email).exists():                messages.info(request,'Email Taken')                return redirect('register')            elif User.objects.filter(username=username).exists():                messages.info(request,'Username Taken')                return redirect('register')            else:                 user=User.objects.create_user(username=username,password=password1,email=email,first_name=first_name,last_name=last_name)                user.save()                print('user created')                return redirect('login')        else:            messages.info(request,"Password don't match!")            return redirect('register')    else:        return render(request,"register.html")
查看完整描述

2 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

那是因為它找不到鑰匙first_name。request.POST

Python中,字典有一個內置的靜態方法.get()。.get()找不到鍵時,默認返回或None您指定的值。

我的建議是使用.get(). 這是示例-

改變

first_name=request.POST["first_name"]

first_name=request.POST.get("first_name", "default value")

此外,無需{% csrf_token %}在每個輸入字段之前編寫。csrf_token每個表格只需要一個。因此,您可以刪除其他的,只需將一個保留在表單標簽內。


查看完整回答
反對 回復 2022-11-09
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

檢查 register.html 的 firstname 字段并確保 firstname 輸入字段的名稱必須為 first_name。

例如
<input type="text" name="first_name" class="form-control" required>

查看完整回答
反對 回復 2022-11-09
  • 2 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號