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


82

之间有什么区别

request.POST.get('sth')

request.POST['sth']

找不到类似的问题,两者对我来说都一样,假设我可以分别使用它们,但是也许我错了,这就是为什么我要问。有任何想法吗?

Answers:


192

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)

12
+1。提到.get是python字典的默认行为。
Tommy Strand 2012年

1
“这是任何python词典的行为,并且不特定于request.POST”。我希望我在使用python的第一天就读过此答案... +1!
kikusin

0

普通词典访问和使用.get()访问之间的主要区别是

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

request.POST.get('sth')

将不返回任何键“ sth不存在”,并且通过将第二个参数赋予get()将作为默认值返回。

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

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


2
在这个答案中提出了哪些尚未被高度认可和接受的答案呢?
斯蒂芬·劳奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.