108

In a Django request I have the following:

POST:<QueryDict: {u'section': [u'39'], u'MAINS': [u'137']}>

How do I get the values of section and MAINS?

if request.method == 'GET':
    qd = request.GET
elif request.method == 'POST':
    qd = request.POST

section_id = qd.__getitem__('section') or getlist....
daaawx
  • 3,273
  • 2
  • 17
  • 16
Hulk
  • 32,860
  • 62
  • 144
  • 215

2 Answers2

224

You may also use:

request.POST.get('section','') # => [39]
request.POST.get('MAINS','') # => [137] 
request.GET.get('section','') # => [39]
request.GET.get('MAINS','') # => [137]

Using this ensures that you don't get an error. If the POST/GET data with any key is not defined then instead of raising an exception the fallback value (second argument of .get() will be used).

crodjer
  • 13,384
  • 9
  • 38
  • 52
111

You can use [] to extract values from a QueryDict object like you would any ordinary dictionary.

# HTTP POST variables
request.POST['section'] # => [39]
request.POST['MAINS'] # => [137]

# HTTP GET variables
request.GET['section'] # => [39]
request.GET['MAINS'] # => [137]

# HTTP POST and HTTP GET variables (Deprecated since Django 1.7)
request.REQUEST['section'] # => [39]
request.REQUEST['MAINS'] # => [137]
chhantyal
  • 11,874
  • 7
  • 51
  • 77
Johannes Gorset
  • 8,715
  • 4
  • 36
  • 34