En una vista de django, etc., puede acceder a la solicitud .GET ['variablename'], por lo que en su vista puede volver a hacer algo como esto:Manejo de request.GET de Django y variables múltiples para el mismo nombre de parámetro
myvar = request.GET['myvar']
el request.GET real [ 'mivar'] tipo de objeto es:
<class 'django.http.QueryDict'>
Ahora, si quieres pasar múltiples variables con el mismo nombre de parámetro es decir
http://example.com/blah/?myvar=123&myvar=567
En otras palabras, que le gustaría una lista de Python regresaron para el parámetro mivar
Esencialmente lo que me gustaría hacer es algo como esto
for var in request.GET['myvar']:
print var
Sin embargo, cuando intentas obtener el último valor pasado en la url, es decir, en el ejemplo anterior obtendrás
y el resultado en la cáscara será:
5
6
7
Sin embargo, cuando se hace una impresión de request.GET que parece que tiene una lista es decir:
<QueryDict: {u'myvar': [u'123', u'567']}>
actualización Ok: Está diseñado para devolver el último valor, mi caso de uso es que necesito una lista.
de django docs:
QueryDict. getitem (clave) Devuelve el valor de la clave especificada. Si la clave tiene más de un valor, getitem() devuelve el último valor. Aumenta django.utils.datastructures.MultiValueDictKeyError si la clave no existe. (Esta es una subclase de de Python estándar KeyError, por lo que puede pegarse a la captura de KeyError
QueryDict.getlist (clave) Devuelve los datos con la clave solicitada, como una lista Python. Devuelve una lista vacía si la clave no existe está garantizado para devolver una lista de algún tipo
actualización:.. Si alguien sabe por qué django dev de haber hecho esto, por favor hágamelo saber, parece contrario a la intuición para mostrar una lista y no se comporta como uno. ¡No muy pitónico!
Creo que el razonamiento es que debe saber si se espera una lista o un valor individual. QueryDict.getitem no debe devolver una lista a veces, un elemento individual otras veces; entonces, todos tendrían que verificar siempre su tipo de devolución para manejarlo correctamente. – jgiles