Как обрабатывать request.GET с несколькими переменными для одного и того же параметра в Django

В представлении Django вы может получить доступ к request.GET ['имя переменной'] , поэтому в вашем представлении вы можете сделать что-то вроде этого:

myvar = request.GET['myvar']

Фактический тип объекта request.GET ['myvar'] это:

<class 'django.http.QueryDict'>

Теперь, если вы хотите передать несколько переменных с одним и тем же именем параметра, например:

http://example.com/blah/?myvar=123& Он предназначен для возврата последнего значения, мой вариант использования - мне нужен список.

из документации django:

QueryDict. getitem (ключ) Возврат значение для данного ключа. Если ключ имеет более одного значения, getitem () возвращает последнее значение. Поднимает django.utils.datastructures.MultiValueDictKeyError если ключ не существует. (Это подкласс стандарта Python KeyError, так что вы можете продолжать ловить KeyError

QueryDict.getlist (key) Возвращает данные с запрошенным ключом, как Список Python. Возвращает пустой список, если ключ не существует. Это гарантировано чтобы вернуть какой-то список.

Обновление: Если кто-нибудь знает, почему разработчики django сделали это, дайте мне знать, показывать список кажется нелогичным, и он не ведет себя как таковой. Не очень питонический!

70
задан daaawx 16 June 2019 в 01:19
поделиться