Django中`request.data ['param-name']`或`request.data.get('param-name')`有什么不同

Jus*_*ill 3 python django django-views python-3.x django-rest-framework

我试图从API获取数据

1 request.data['param-name']

输出 - :'9121009000'

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

输出 - :'9121009000'

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

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

提前致谢

Wil*_*sem 6

如果你request.data['key']在窗帘后面执行一个调用,Python将调用__getitem__函数request.data.我们可以阅读文档并查看:

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).

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