У поданні Django ви можете отримати доступ до request.GET['variablename']
, тому у своєму поданні ви можете зробити щось подібне:
myvar = request.GET['myvar']
Фактичний request.GET['myvar']
тип об'єкта:
<class 'django.http.QueryDict'>
Тепер, якщо ви хочете передати кілька змінних з однаковим іменем параметра, тобто:
http://example.com/blah/?myvar=123&myvar=567
Ви хотіли б, щоб list
для параметра повернувся python 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 Update: Він призначений для повернення останнього значення, у моєму випадку використання мені потрібен список.
з django docs:
QueryDict. getitem (ключ) Повертає значення для даного ключа. Якщо ключ має більше одного значення, getitem () повертає останнє значення. Піднімає django.utils.datastructures.MultiValueDictKeyError, якщо ключ не існує. (Це підклас стандартної KeyError Python, тому ви можете дотримуватися лову KeyError
QueryDict.getlist (ключ) Повертає дані із запитаним ключем у вигляді списку Python. Повертає порожній список, якщо ключ не існує. Гарантовано повернеться якийсь список.
Оновлення: Якщо хтось знає, чому django dev зробили це, будь ласка, дайте мені знати, здається протиінтуїтивним, щоб показати список, і він не поводиться як один. Не дуже пітонічно!