Обработка запроса Django.Получить и несколько переменных для одного и того же имени параметра
в представлении django и т. д. вы можете получить доступ к запрос.Сделать['имя_переменной'], так что на ваш взгляд можно вернуть сделать что-то вроде этого:
myvar = request.GET['myvar']
фактический запрос.GET ['myvar'] тип объекта:
<class 'django.http.QueryDict'>
теперь, если вы хотите передать несколько переменных с тем же именем параметра т. е.
http://example.com/blah/?myvar=123&myvar=567
другими словами, вы хотели бы python список возвращается для параметра myvar
по сути то, что я хочу сделать, это что-то вроде этого
for var in request.GET['myvar']:
print var
однако, когда вы пытаетесь, что вы получаете только последнее значение, переданное в url-адрес т. е. в примере выше вы получите 567
и результат в оболочке будет:
5
6
7
однако, когда вы делаете печать запроса.Получить кажется, что у него есть список, т. е.:
<QueryDict: {u'myvar': [u'123', u'567']}>
Ok Обновление: Он предназначен для верните последнее значение, мой вариант использования - мне нужен список.
из django docs:
QueryDict.getitem(клавиша) Возвращается значение для данного ключа. Если ключ имеет более одного значения, getitem() возвращает последнее значение. Повышения Джанго.utils.структуры данных.MultiValueDictKeyError если ключ не существует. (Это подкласс в Python стандартной KeyError, так что вы можете придерживаться ловить KeyError
QueryDict.getlist (ключ) возвращает данные с запрошенным ключом, как a Список Python. Возвращает пустой список, если ключа не существует. Это гарантировано чтобы вернуть какой-то список.
обновление: Если кто-нибудь знает, почему django dev сделали это, пожалуйста, дайте мне знать, кажется, что это противоречит интуиции, чтобы показать список, и он не ведет себя как один. Не очень подходящие для Python!
2 ответа:
вы хотите getlist () функция объекта GET:
request.GET.getlist('myvar')