request.POST.get('sth')vs request.POST – 区别?

有什么区别

request.POST.get('sth') 

 request.POST['sth'] 

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

如果'sth'不在request.POST request.POST['sth']会引发一个KeyErrorexception。

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

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

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


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

第一个片段:

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

第二个片段:

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


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

第一个片段:

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

第二个片段:

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


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

第一个片段:

 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()方法字典也会为你提供更好的error handling

 request.POST.get('sth') 

将返回没有是关键“不存在”,也是通过给第二个参数get()将它作为默认值返回。

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

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