我试图从API获取数据
1request.data['param-name']
输出 -:"9121009000">
2request.data.get('param-name')
输出 -:"9121009000">
两者都给出了相同的结果。
那么哪一个最好使用获取数据以及为什么。
提前致谢
如果执行request.data['key']
调用,在幕后,Python 会调用request.data
的__getitem__
函数。我们可以阅读文档并查看:
QueryDict.__getitem__(key)
返回给定
key
的值。如果key
有多个 值,则返回最后一个值。提高django.utils.datastructures.MultiValueDictKeyError
密钥是否执行 不存在。(这是Python标准KeyError
的一个子类,所以 你可以坚持抓住KeyError
。
而如果你执行一个request.data.get('key'), it will call the
.get(..('函数,我们在文档中看到:
QueryDict.get(key, default=None)
使用与
__getitem__()
相同的逻辑,带有用于返回 默认值(如果键不存在(。
因此,这意味着如果键不存在,.get(..)
将返回None
,如果您没有提供默认值,或者如果您使用request.data.get('key', somedefault)
查询,它将返回给定的默认值。
通常,如果值是可选的,并且您希望减少代码量以检查键是否存在,则使用后者。
是的,它们都会给你相同的结果,但它们的不同之处在于它们检索给定键的数据的方式。为此,您需要了解python中的字典是如何工作的,让我们定义一个字典:
>>> 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
在上面的示例中,在第一种方法中,键必须存在,而在第二种情况下,如果找不到键,我可以定义默认值。