Запрос Django получает параметры
В запросе 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....
Ответы
Ответ 1
Вы можете использовать []
для извлечения значений из объекта 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]
Ответ 2
Вы также можете использовать:
request.POST.get('section','') # => [39]
request.POST.get('MAINS','') # => [137]
request.GET.get('section','') # => [39]
request.GET.get('MAINS','') # => [137]
Использование этого гарантирует, что вы не получите сообщение об ошибке. Если данные POST/GET с любым ключом не определены, вместо того, чтобы поднимать исключение, резервное значение (используется второй аргумент .get()).
Ответ 3
Эти запросы в настоящее время выполняются двумя способами. Если вы хотите получить доступ к параметрам запроса (GET), вы можете запросить следующее:
http://myserver:port/resource/?status=1
request.query_params.get('status', None) => 1
Если вы хотите получить доступ к параметрам, переданным POST, вам нужно получить доступ к этому способу:
request.data.get('role', None)
Получая доступ к словарю (QueryDict) с помощью get(), вы можете установить значение по умолчанию. В вышеупомянутых случаях, если "статус" или "роль" не сообщаются, значения равны None.