2010-11-12 50 views
51

在Django的請求,我有以下Django的請求得到參數

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

如何獲得的sectionMAINS值是多少?

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

    section_id = qd.__getitem__('section') or getlist.... 
+7

永遠不要直接調用其中一種魔術方法。始終使用適當的幫助功能。 – 2010-11-12 08:04:39

+0

k是否有任何方法可以解碼片段 – Hulk 2010-11-12 08:05:54

+1

通過有關這些對象的django文檔,請參閱:http://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects。與Python中的dict相比,有一些差異。 – Ski 2010-11-12 10:44:14

回答

58

您可以使用[]QueryDict的物體,像你將任何普通的字典中提取值。

# 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] 
+8

這些年來只是一個暗示:request.REQUEST同時被棄用 – aronadaal 2015-05-26 12:16:55

140

你也可以使用:

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

使用這確保你沒有得到一個錯誤。如果沒有定義任何鍵的POST/GET數據,則不會引發異常,而是使用fallback值(.get()的第二個參數)。

+14

+1因爲它是可靠的方式 – 2010-11-12 08:57:13

+0

絕對是最穩健的方式! – 2015-07-04 09:38:26