Django 中的 'request.data['param-name'] ' 或 'request.data.get('param-name')' 有什么区别



我试图从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

在上面的示例中,在第一种方法中,键必须存在,而在第二种情况下,如果找不到键,我可以定义默认值。

相关内容

最新更新