Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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中的'request.data[';param name';]`或'request.data.get(';param name';)`之间有什么不同_Python_Django_Python 3.x_Django Rest Framework_Django Views - Fatal编程技术网

Python Django中的'request.data[';param name';]`或'request.data.get(';param name';)`之间有什么不同

Python Django中的'request.data[';param name';]`或'request.data.get(';param name';)`之间有什么不同,python,django,python-3.x,django-rest-framework,django-views,Python,Django,Python 3.x,Django Rest Framework,Django Views,我试图从API获取数据 1request.data['param-name'] 输出-:'9121009000' 2request.data.get('param-name') 输出-:'9121009000' 两者都给出了相同的结果 那么,哪一个是获取数据的最佳方法以及原因 如果您执行请求.data['key']调用,请提前感谢,在窗帘后面,Python将调用请求.data的函数。我们可以看到: QueryDict.\uuu获取项目\uuuuuuu(键) 返回给定键的值。如果键有多个 值,则返

我试图从API获取数据

1
request.data['param-name']

输出-:'9121009000'

2
request.data.get('param-name')

输出-:'9121009000'

两者都给出了相同的结果

那么,哪一个是获取数据的最佳方法以及原因


如果您执行
请求.data['key']
调用,请提前感谢,在窗帘后面,Python将调用
请求.data的
函数。我们可以看到:

QueryDict.\uuu获取项目\uuuuuuu(键)

返回给定
键的值。如果
键有多个
值,则返回最后一个值提高
django.utils.datastructures.multi-valuedictKeyError
如果该键 不存在
。(这是Python标准
KeyError
的一个子类,所以 您可以坚持捕捉
KeyError

然而,如果执行
request.data.get('key'),它将调用
.get(..)`函数,我们在中看到:

QueryDict.get(key,default=None)

使用与
\uuu getitem\uuu()
相同的逻辑,使用钩子返回 如果密钥不存在,则为默认值

因此,这意味着如果密钥不存在,
.get(..)
将返回
None
,如果您没有提供默认值,或者如果您使用
request.data.get('key',somedefault)
进行查询,它将返回给定的默认值


通常,如果值是可选的,并且您希望减少检查键是否存在的代码量,则使用后者。

是的,这两种方法都会给出相同的结果,但不同之处在于它们检索给定键数据的方式。为此,您需要了解python中字典的工作原理,让我们定义一个dict:

>>> kwarg = {'name': 'John'}
>>> kwarg['name']
'John'
>>> kwarg['age']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'
>>>
>>> kwarg.get('age', 25)
25
kwarg={'name':'John'} >>>kwarg['name'] “约翰” >>>夸格[年龄] 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 关键错误:“年龄” >>> >>>kwarg.get('年龄',25岁) 25
在上面的示例中,在第一种方法中,键必须存在,而在第二种情况下,如果找不到键,我可以定义一个默认值。

可能的重复项