request.POST.get('sth')vs request.POST ['sth'] - 区别?

dan*_*333 70 django

有什么区别

request.POST.get('sth')
Run Code Online (Sandbox Code Playgroud)

request.POST['sth']
Run Code Online (Sandbox Code Playgroud)

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

dge*_*gel 162

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
Run Code Online (Sandbox Code Playgroud)


第二个片段:

x = request.POST.get('sth')
Run Code Online (Sandbox Code Playgroud)



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

第一个片段:

try:
    x = request.POST['sth']
except KeyError:
    x = -1
Run Code Online (Sandbox Code Playgroud)


第二个片段:

x = request.POST.get('sth', -1)
Run Code Online (Sandbox Code Playgroud)



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

第一个片段:

if 'sth' in request.POST:
    x = request.POST['sth']
else:
    x = -1
Run Code Online (Sandbox Code Playgroud)


第二个片段:

x = request.POST.get('sth', -1)
Run Code Online (Sandbox Code Playgroud)

  • +1.提到.get是python词典的默认行为. (9认同)