[Django] #32561: Unpacking request.GET into a function call turns the values into lists with one item.

6 views
Skip to first unread message

Django

unread,
Mar 17, 2021, 8:37:21 AM3/17/21
to django-...@googlegroups.com
#32561: Unpacking request.GET into a function call turns the values into lists with
one item.
-----------------------------------------+------------------------
Reporter: atursams | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 3.1
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-----------------------------------------+------------------------
Going to this url:

http://localhost:8000/api/quote?from_currency_code=EUR&amount=300&to_currency_code=ILS

{{{
from django.shortcuts import render

def print_params(**kwargs):
print(*kwargs.items())

async def index(request):
print_params(**request.GET)
}}}

results in this


{{{
('from_currency_code', ['EUR']) ('amount', ['300']) ('to_currency_code',
['ILS'])
}}}

This is an odd behavior. request.GET.items() has the expected result.

--
Ticket URL: <https://code.djangoproject.com/ticket/32561>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Mar 17, 2021, 10:54:20 AM3/17/21
to django-...@googlegroups.com
#32561: Unpacking request.GET into a function call turns the values into lists with
one item.
-------------------------------+--------------------------------------
Reporter: atursams | Owner: nobody
Type: Bug | Status: closed
Component: Uncategorized | Version: 3.1
Severity: Normal | Resolution: invalid

Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------------------------
Changes (by Carlton Gibson):

* status: new => closed
* resolution: => invalid


Comment:

This is expected behaviour of `QueryDict`.
[https://docs.djangoproject.com/en/3.1/ref/request-response/#querydict-
objects From the docs]:

> In an HttpRequest object, the GET and POST attributes are instances of
django.http.QueryDict, a dictionary-like class customized to deal with
multiple values for the same key. This is necessary because some HTML form
elements, notably <select multiple>, pass multiple values for the same
key.

(The underlying storage is a list.)

This issue tracker is not really the appropriate place for this kind of
query. Please see TicketClosingReasons/UseSupportChannels.

--
Ticket URL: <https://code.djangoproject.com/ticket/32561#comment:1>

Reply all
Reply to author
Forward
0 new messages