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.
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')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With