I'm experiencing a really bizarre behavior when using the test client
in django.
I'm using a POST to send data to my django app. I usually do this from
an iPhone app and/or a test html form. On the server side, this is how
I handle it:
def handle_query(request):
print request
q = con.QueryLog()
q.ID = request.POST.get('ID', '')
q.device = request.POST.get('device-model', '')
....
That print statement looks like what you would expect, i.e. each
parameter in the post request is turned into a key in the dictionary:
POST:<QueryDict: {u'app-version': [u'3.0'], u'server-version':
[u'v3d0'],
However, I started writing some tests using django's test client, and
no matter what I try, the dictionary of POST parameters I send in the
post request get bunched into a single key in the QueryDict. Allow me
to illustrate with some code:
class SearchTest(TestCase):
def setUp(self):
pass
def test_search(self):
request = HttpRequest()
data = '{"amzn_locale":"com"}'
# request._raw_post_data = data
resp = self.client.post('/is/',
data=data,
content_type='application/x-www-form-
urlencoded',
# content_type='application/json',
)
The same print statement on the server side shows the inexplicable
grouping of the dictionary into a string:
POST:<QueryDict: {u'{"amzn_locale":"com"}': [u'']}>,
If I set data to an actual dictionary, same thing
data = '{"amzn_locale":"com"}'
Setting the request._raw_post_data doesn't change anything. Nor does
changing
content_type='application/json'
Any help would be much appreciated. From this stackoverflow question
it seems like I'm not the first one to run into this
http://stackoverflow.com/questions/2579235/iphone-json-post-request-to-django-server-creates-querydict-within-querydict
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.