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