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.

Reply via email to