Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-从html页面请求GET对象时发生多值DictKeyError_Python_Django_Python 3.x_Django Forms_Django Views - Fatal编程技术网

Python Django-从html页面请求GET对象时发生多值DictKeyError

Python 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

我在从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>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})