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 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