92

和有什么区别

request.POST.get('sth')

request.POST['sth']

没有找到类似的问题,两者对我来说都是一样的,假设我可以单独使用它们,但也许我错了,这就是我问的原因。有任何想法吗?

4

3 回答 3

215

request.POST['sth']KeyError如果'sth'不在request.POST. _

request.POST.get('sth')None如果'sth'不在,将返回request.POST

此外,.get允许您提供默认值的附加参数,如果键不在字典中,则返回该参数。例如,request.POST.get('sth', 'mydefaultvalue')

这是任何 python 字典的行为,并不特定于request.POST.



这两个片段在功能上是相同的:

第一个片段:

try:
    x = request.POST['sth']
except KeyError:
    x = None


第二个片段:

x = request.POST.get('sth')



这两个片段在功能上是相同的:

第一个片段:

try:
    x = request.POST['sth']
except KeyError:
    x = -1


第二个片段:

x = request.POST.get('sth', -1)



这两个片段在功能上是相同的:

第一个片段:

if 'sth' in request.POST:
    x = request.POST['sth']
else:
    x = -1


第二个片段:

x = request.POST.get('sth', -1)
于 2012-09-20T18:20:03.540 回答
1

Request.POST 示例

req.POST['name_your_desired_field'] 

如果 'name_your_desired_field' 不在 req.POST 中,这将引发 KeyError 异常。

request.POST.get('name_your_desired_field') 

如果 'name_your_desired_field' 不在 req.POST 中,这将返回 None。

虽然,.get 允许您提供默认值的附加参数,如果键不在字典中,则返回该参数。例如,

req.POST.get('name_your_desired_field', 'your_default_value')

这是任何 python 字典的行为,并不特定于 req.POST

请求.GET 示例

request.GET.get('name_your_desired_field') 

如果 'name_your_desired_field' 不在 req.GET 中,这将返回 None。

尽管如此, .get 允许您提供默认值的附加参数,如果键不在字典中,则返回该参数。例如,

req.GET.get('name_your_desired_field', 'your_default_value')

这是任何 python 字典的行为,并不特定于 req.GET

于 2021-03-04T06:40:57.337 回答
0

普通字典访问和使用 .get() 访问它的主要区别在于

使用类似的东西 request.POST['sth']会出现一个关键错误是如果 ket 'sth' 不存在。但是使用 get() 方法字典也会为您提供更好的错误处理

request.POST.get('sth')

将返回 none 是键 'sth 不存在' 并且通过将第二个参数提供给 get() 将返回它作为默认值。

data = request.POST.get('sth','my_default_value')

如果 'sth' 键不存在,数据中的值将为my_default_value. 这就是使用 get() 方法优于普通字典访问的优势。

于 2017-10-03T17:37:39.797 回答