Python Django-从html页面请求GET对象时发生多值DictKeyError
我在从HTML获取数据时遇到问题 在视图中.pyPython Django-从html页面请求GET对象时发生多值DictKeyError,python,django,python-3.x,django-forms,django-views,Python,Django,Python 3.x,Django Forms,Django Views,我在从HTML获取数据时遇到问题 在视图中.py def PrimeNumber(request): number = request.GET['number'] return render(request , 'PrimeNumber.html',{'number':number}) html文件中的 <form action = "{% url 'PrimeNumber' %}"> <label for="number"><b>E
def PrimeNumber(request):
number = request.GET['number']
return render(request , 'PrimeNumber.html',{'number':number})
html文件中的
<form action = "{% url 'PrimeNumber' %}">
<label for="number"><b>Enter the number : </b></label>
<input type="text" placeholder="Enter Number" name= "number" required>
</form>
输入号码:
我面临的错误
异常类型:多值DictKeyError异常值:“'number'” 我不知道这里发生了什么事。由于我是python初学者,我已经阅读了许多关于stackoverflow的答案,但不知道如何在我自己的代码中实现它。
如果有任何信息丢失,请通知。请将您的取数
方法更改为:
number = request.GET.get('number')
如果您想要默认值,如果'number'
未通过,请使用以下行:
number = request.GET.get('number', 0)
注意:request.GET.GET('number')
如果在请求中找不到此参数,则返回None
,并且未设置默认值。request.GET
是一个QueryDict(类似于python字典,只是它可以为同一个键保存多个值,因此MultiValueDict
),因此,访问字典中不存在的密钥会引发密钥错误。如果要访问不确定是否存在的密钥,应使用get
或getlist
方法:request.get.get('somekey')
,如果密钥不存在,则返回None
。您还可以将None
更改为默认值:request.GET.GET('somekey','empty')
如果'somekey'不存在,将给出字符串'empty'。现在我不太清楚为什么'number'不存在。但看起来您在第一次和提交空html表单时使用的是相同的视图。我猜在您提交表单之前就发生了错误?在实现了您提供的源代码之后,当我尝试在文本框中输入数字并单击素数URL时,它向我显示“您已输入数字::”无。(希望我能添加屏幕截图)。我的意思是,它没有提取我在文本框中输入的数字,并且没有任何值。@SahilNagpal您确定“number”参数已发送到服务器,并且您确定使用GET方法将数据发送到服务器吗?注释:request.GET.GET('number')
如果在请求中找不到此参数,则返回None.GETI忘了对我的帮助说一声非常感谢。是的,M.J我有一个参数“number”发送到服务器。如HTML文件中所述,输入数字:在get request中有我正在获取的名称编号。您不设置form方法,默认情况下form方法为POST,请将所有请求替换为get
。将其设置为request后,POST
。我遇到了“QueryDict”对象不可调用”错误。这是代码now number=request.POST('number')返回render(request,'PrimeNumber.html',{'number':number})