Параметры получения запроса Django


84

В запросе 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
Никогда не вызывайте один из магических методов напрямую. Всегда используйте соответствующую вспомогательную функцию.
Игнасио Васкес-Абрамс

k есть ли способ расшифровать разделы
Халк

1
Прочтите документацию django по этим объектам: docs.djangoproject.com/en/dev/ref/request-response/… . Есть некоторые отличия от dict в Python.
Ski

Ответы:


91

Вы можете использовать его []для извлечения значений из 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]

10
просто намек после
стольких

190

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

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

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


1
Определенно самый надежный способ!
d-coder
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.