W widoku Django możesz uzyskać dostęp do request.GET['variablename']
, więc w swoim widoku możesz zrobić coś takiego:
myvar = request.GET['myvar']
Rzeczywisty request.GET['myvar']
typ obiektu to:
<class 'django.http.QueryDict'>
Teraz, jeśli chcesz przekazać wiele zmiennych o tej samej nazwie parametru, tj .:
http://example.com/blah/?myvar=123&myvar=567
Chciałbyś list
zwrócić pythona dla parametru myvar
, a następnie zrób coś takiego:
for var in request.GET['myvar']:
print(var)
Jednak jeśli spróbujesz uzyskać tylko ostatnią wartość przekazaną w adresie URL, tj. W powyższym przykładzie otrzymasz 567 , a wynik w powłoce będzie:
5
6
7
Jednak kiedy robisz wydruk request.GET
, wygląda na to, że ma list
ie:
<QueryDict: {u'myvar': [u'123', u'567']}>
OK Aktualizacja: Jest przeznaczony do zwracania ostatniej wartości, moim przypadkiem użycia jest lista.
z dokumentacji django:
QueryDict. getitem (klucz) Zwraca wartość dla podanego klucza. Jeśli klucz ma więcej niż jedną wartość, getitem () zwraca ostatnią wartość. Podnosi django.utils.datastructures.MultiValueDictKeyError, jeśli klucz nie istnieje. (Jest to podklasa standardowego KeyError w Pythonie, więc możesz trzymać się wychwytywania KeyError
QueryDict.getlist (klucz) Zwraca dane z żądanym kluczem, jako listę Pythona. Zwraca pustą listę, jeśli klucz nie istnieje. Na pewno zwróci jakąś listę.
Aktualizacja: Jeśli ktoś wie, dlaczego deweloperzy django to zrobili, daj mi znać, wydaje się sprzeczne z intuicją, aby wyświetlić listę i nie zachowuje się jak jedna. Niezbyt pytoniczne!