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.

Reply via email to