On Jun 11, 3:59 pm, bruno desthuilliers <bruno.desthuilli...@gmail.com> wrote: > 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. Sorry that was a typo in the post. The same behavior happens with the following:
data = {"amzn_locale":"com"} -- 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.