我尝试从API获取数据
1 request.data['param-name']
输出 - :' 9121009000'
2 request.data.get('param-name')
输出 - :' 9121009000'
两者都给出了相同的结果。
那么哪一个最好使用获取数据和为什么。
提前致谢
答案 0 :(得分:6)
如果您在幕后执行request.data['key']
来电,Python会调用__getitem__
的{{1}}功能。我们可以阅读the documentation并查看:
<强>
request.data
强>返回给定
QueryDict.__getitem__(key)
的值。如果key
有多个 value,它返回最后一个值。的加薪 如果密钥有,则key
不存在。 (这是Python标准django.utils.datastructures.MultiValueDictKeyError
的子类,所以 你可以坚持抓住KeyError
。)
然而,如果您执行KeyError
。get(..)`函数,我们会在documentantation中看到:
<强>
request.data.get('key'), it will call the
强>使用与
QueryDict.get(key, default=None)
相同的逻辑,使用钩子返回a 如果密钥不存在,则默认值。
所以这意味着如果密钥不存在,__getitem__()
将返回.get(..)
,以防您不提供默认值,否则它将返回给定的默认值如果您使用None
进行查询。
通常后者用于值是可选的,并且您希望减少检查密钥是否存在的代码量。
答案 1 :(得分:2)
是的,它们都会给你相同的结果,但是它们的不同之处在于它们检索给定键的数据的方式。为此你需要了解python中的字典是如何工作的,让我们定义一个字典:
x = tostring(ABC)
x[1]
x[2]
x[3]
在第一种方法的上述例子中,必须存在密钥,而在第二种情况下,如果找不到密钥,我可以定义一个默认值。