I have a Django View that uses a query parameter to do some content filtering. Something like this:
/page/?filter=one+and+two
/page/?filter=one,or,two
I have noticed that Django converts the +
to a space (request.GET.get('filter')
returns one and two
), and I´m OK with that. I just need to adjust the split()
function I use in the View accordingly.
But...
When I try to test this View, and I call:
from django.test import Client
client = Client()
client.get('/page/', {'filter': 'one+and+two'})
request.GET.get('filter')
returns one+and+two
: with plus signs and no spaces. Why is this?
I would like to think that Client().get()
mimics the browser behaviour, so what I would like to understand is why calling client.get('/page/', {'filter': 'one+and+two'})
is not like browsing to /page/?filter=one+and+two
. For testing purposes it should be the same in my opinion, and in both cases the view should receive a consistent value for filter: be it with +
or with spaces.
What I don´t get is why there are two different behaviours.