错误:/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
提交
取消