之间有什么区别
request.POST.get('sth')
和
request.POST['sth']
找不到类似的问题,两者对我来说都一样,假设我可以分别使用它们,但是也许我错了,这就是为什么我要问。有任何想法吗?
Answers:
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)
普通词典访问和使用.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()方法优于常规字典访问的优势。