在Django中`request.data [‘param-name’]`或`request.data.get(‘param-name’)`之间的区别

我试图从API获取数据

1 request.data [‘param-name’]

输出 – :’9121009000′

2 request.data.get(‘param-name’)

输出 – :’9121009000′

两者都给出了相同的结果.

那么哪一个最好使用获取数据和为什么.

提前致谢

最佳答案 如果你执行request.data [‘key’]调用,在幕后,
Python将调用request.data的__getitem__函数.我们可以阅读
the documentation并看到:

QueryDict.__getitem__(key)

Returns the value for the given key. If the key has more than one
value, it returns the last value. Raises
django.utils.datastructures.MultiValueDictKeyError if the key does
not exist
. (This is a subclass of Python’s standard KeyError, so
you can stick to catching KeyError.)

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

QueryDict.get(key, default=None)

Uses the same logic as __getitem__(), with a hook for returning a
default
value if the key doesn’t exist.

所以这意味着如果密钥不存在,.get(..)将返回None,以防您没有提供默认值,或者如果您使用request.data.get查询它将返回给定的默认值(‘key’ ,某些默认).

通常,后者用于值是可选的,并且您希望减少检查密钥是否存在的代码量.

点赞