On 11 juin, 14:36, Andres <andres.doug...@gmail.com> wrote: > 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"}'
That's a string representation of plain dict. > # 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'']}>, What else did you expect exactly ? You're supposed to pass a dict, not a string representation of a dict. > If I set data to an actual dictionary, same thing > > data = '{"amzn_locale":"com"}' This is the exact same string. Remove the surrounding single quotes if you want a dict litteral. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.