2010-11-12 3 views
51

в запросе Django У меня есть следующиезапрос Джанго получить параметры

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

Как получить значения section и MAINS?

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

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

Никогда не вызывайте один из магических методов напрямую. Всегда используйте соответствующую вспомогательную функцию. –

+0

k есть ли способ декодирования разделов – Hulk

+1

Прочитайте документацию django по этим объектам: http://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects. Есть несколько отличий по сравнению с dict в python. – Ski

ответ

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

140

Вы также можете использовать:

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

Используя это гарантирует, что вы не получите сообщение об ошибке. Если данные POST/GET с любым ключом не определены, вместо того, чтобы поднимать исключение, резервное значение (используется второй аргумент .get()).

+14

+1 для этого надежного способа –

+0

Определенно самый надежный путь! –

Смежные вопросы