Запит 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 є деякі відмінності.
Лижі

Відповіді:


90

Ви можете використовувати []для вилучення значень з 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]

9
просто підказка після всіх цих років: request.REQUEST тим часом застаріла
aronadaal

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-кодер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.