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