Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

django

What is the difference between

request.POST.get('sth')

and

request.POST['sth']

Did not find the similar question, both work the same for me, suppose I can use them separately but maybe I am wrong, that is why I am asking. Any ideas?

like image 816
danb333 Avatar asked Sep 20 '12 18:09

danb333


2 Answers

request.POST['sth'] will raise a KeyError exception if 'sth' is not in request.POST.

request.POST.get('sth') will return None if 'sth' is not in request.POST.

Additionally, .get allows you to provide an additional parameter of a default value which is returned if the key is not in the dictionary. For example, request.POST.get('sth', 'mydefaultvalue')

This is the behavior of any python dictionary and is not specific to request.POST.



These two snippets are functionally identical:

First snippet:

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


Second snippet:

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



These two snippets are functionally identical:

First snippet:

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


Second snippet:

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



These two snippets are functionally identical:

First snippet:

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


Second snippet:

x = request.POST.get('sth', -1)
like image 163
dgel Avatar answered Nov 17 '22 21:11

dgel


Request.POST Example

req.POST['name_your_desired_field'] 

This will throw a KeyError exception if 'name_your_desired_field' is not in req.POST.

request.POST.get('name_your_desired_field') 

This will return None if 'name_your_desired_field' is not in req.POST.

Although, .get allows you to provide an additional parameter of a default value which is returned if the key is not in the dictionary. For example,

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

This is the behavior of any python dictionary and is not specific to req.POST

Request.GET Example

request.GET.get('name_your_desired_field') 

This will return None if 'name_your_desired_field' is not in req.GET.

Allthough, .get allows you to provide an additional parameter of a default value which is returned if the key is not in the dictionary. For example,

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

This is the behavior of any python dictionary and is not specific to req.GET

like image 25
Ashish Gupta Avatar answered Nov 17 '22 22:11

Ashish Gupta