錯誤:/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
每個表格只需要一個。因此,您可以刪除其他的,只需將一個保留在表單標簽內。

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
檢查 register.html 的 firstname 字段并確保 firstname 輸入字段的名稱必須為 first_name。
例如<input type="text" name="first_name" class="form-control" required>
添加回答
舉報
0/150
提交
取消