Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to obtain all values of a multi-valued key from Django's request.GET QueryDict

Tags:

The Django docs say at http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict.iteritems thatQueryDict.iteritems() uses the same last-value logic as QueryDict.__getitem__(), which means that if the key has more than one value, __getitem__() returns the last value.

Let's say print request.GET looks like this:

<QueryDict: {u'sex': [u'1'], u'status': [u'1', u'2', u'3', u'4']}>

If I want to get a string like sex=1&status=1&status=2&status=3&status=4 (standard HTTP GET stuff) the following code won't give the desired results because of the iteritems behavior mentioned above:

mstring = [] for gk, gv in request.GET.iteritems():     mstring.append("%s=%s" % (gk, gv)) print "&".join(mstring) 

What is the most efficient way to obtain the result that I want without too much looping?

Regards.

[EDIT]

I should mention that I am not resorting to QueryDict.urlencode() because there are some keys in that request.GET that I don't want in the string. I could alter the string and take those key=value out, but just wondering if there is a better way to go about this. I realize this information should have been explicitly mentioned.

like image 714
chefsmart Avatar asked Jul 24 '10 05:07

chefsmart


1 Answers

request.META['QUERY_STRING'] 

will give the complete query string

or if you want to get the list of values for a given key ex: list of values for status then

request.GET.getlist('status') 
like image 91
Ashok Avatar answered Sep 20 '22 18:09

Ashok