comment faire pour obtenir toutes les valeurs d'un multi-valeur de la clé de Django demande.OBTENIR QueryDict
Le Django docs dire à http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict.iteritems queQueryDict.iteritems()
utilise la même valeur logique QueryDict.__getitem__()
, ce qui signifie que si la clé a plus d'une valeur, __getitem__()
retourne la dernière valeur.
Disons print request.GET
ressemble à ceci:
<QueryDict: {u'sex': [u'1'], u'status': [u'1', u'2', u'3', u'4']}>
Si je veux obtenir une chaîne de caractères comme sex=1&status=1&status=2&status=3&status=4
(standard HTTP GET stuff) le code suivant ne donnera pas les résultats escomptés en raison de la iteritems
comportement mentionné ci-dessus:
mstring = []
for gk, gv in request.GET.iteritems():
mstring.append("%s=%s" % (gk, gv))
print "&".join(mstring)
Quel est le moyen le plus efficace pour obtenir le résultat que je veux sans trop de boucle?
Ce qui concerne.
[MODIFIER]
Je dois préciser que je ne suis pas recourir à QueryDict.urlencode()
parce qu'il y a certaines touches dans cette demande.Que je ne veux pas dans la chaîne. Je pouvais modifier la chaîne et de prendre ceux de la clé=valeur, mais me demandais si il ya une meilleure façon d'aller à ce sujet. Je me rends compte de cette information doivent avoir été explicitement mentionné.
OriginalL'auteur chefsmart | 2010-07-24
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner:
Il y a un
request.GET.iterlists()
. Aussi, je pense que l'approche par David réponse ci-dessous est plus propre.D'accord. C'est pourquoi je upvoted 🙂 Encore, n'aide pas si vous voulez filtrer un sous-ensemble de clés avant l'encodage.
OriginalL'auteur elo80ka
donnera la requête complète de la chaîne de
ou si vous souhaitez obtenir la liste de valeurs pour une clé donnée
ex: liste des valeurs de statut puis
request.POST.getlist('foo')
OriginalL'auteur Ashok
Je crois QueryDict.urlencode réalise votre résultat souhaité si tout ce que vous voulez faire est d'imprimer le QueryDict puis juste
devrait faire l'affaire. Laissez-moi savoir si vous étiez en train de faire quelque chose d'autre et je vais essayer de vous aider!
data = request.GET.copy()
, puis enlever des choses à partir des données que vous n'avez pas besoin, et puis nedata.urlencode()
.OriginalL'auteur David from Upbeat
OriginalL'auteur Daniel Roseman
C'est facile!
Juste
print(dict(request.GET))
OriginalL'auteur Mark Lesly
vous pouvez lancer le querydict dans un dictionnaire
OriginalL'auteur mossplix