在/admin/criminals发生了MultiValueDictKeyError错误,错误的键是'gender'。

26 浏览
0 Comments

在/admin/criminals发生了MultiValueDictKeyError错误,错误的键是'gender'。

我遇到了代码问题,每当我将数据输入到数据库中,然后点击提交时,就会出现"Multyvaluekeyerror"错误。我已经多次更改了表单的值,但仍然没有解决。请帮帮我,非常感谢。

错误信息如下:

MultiValueDictKeyError at /admin/criminals

'gender'

请求方式:POST

请求URL:http://127.0.0.1:8000/admin/criminals

Django版本:2.2.4

异常类型:MultiValueDictKeyError

异常值:'gender'

异常位置:C:\Users\lenovo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\datastructures.py in __getitem__, 第80行

Python可执行文件:C:\Users\lenovo\AppData\Local\Programs\Python\Python37-32\python.exe

Python版本:3.7.4

Python路径:['D:\\django project\\gadmin3',

'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',

'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',

'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',

'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32',

'C:\\Users\\lenovo\\AppData\\Roaming\\Python\\Python37\\site-packages',

'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']

服务器时间:Mon, 7 Oct 2019 04:35:54 +0000

主要表单代码:

  Male  

Female

视图代码:

def criminals(request):

if request.method=="POST":

cn = request.POST['crname']

ccrime = request.POST['crime']

cage = request.POST['age']

cheight=request.POST['height']

cbody = request.POST['bodymark']

crgen = request.POST['gender']

s= Criminals()

s.mname=cn

s.mcrime=ccrime

s.mage=cage

s.image = request.FILES['photo']

s.mheight=cheight

s.mbody=cbody

s.mgender=crgen

s.save()

messages.success(request,"Criminal Added Successfully.")

return render(request,'criminal.html')

else:

return render(request,'criminal.html')

0
0 Comments

在访问/admin/criminals时,出现了一个MultiValueDictKeyError错误,错误信息为'gender'。这个错误的出现原因是由于gender是一个单选按钮,如果没有选择任何选项,那么就不会得到任何输入。

为了避免这个问题,可以使用get方法从POST请求中提取值。代码如下:

crgen = request.POST.get('gender', default_value)

这将消除MultiValueDictKeyError错误。

0
0 Comments

MultiValueDictKeyError at /admin/criminals 'gender'问题的原因是在表单中没有正确命名name属性为'gender'的输入字段。而解决方法是将name属性为'gender'的输入字段正确地添加到表单中。

以下是代码的完整整理:

def criminals(request):
    if request.method == "POST":
        s = Criminals(
            mname=request.POST['crname'],
            ccrime=request.POST['crime'],
            mage=request.POST['age'],
            mheight=request.POST['height'],
            mbody=request.POST['bodymark'],
            mgender=request.POST['gender']
        )
        s.save()
        messages.success(request, "Criminal Added Successfully.")
        return render(request, 'criminal.html')
    else:
        return render(request, 'criminal.html')

以上代码中的问题是在请求的POST数据中找不到名为'gender'的键,导致了MultiValueDictKeyError异常。解决方法是确认表单中的输入字段是否正确命名为'gender',并确保在提交表单时包含了该字段。

0