使用Django Test Client发布数据建立发布请求

时间:2018-02-14 12:47:30

标签: python django

使用我的浏览器发布表单时,来自views侧的发布请求看起来像这样

不可

POST <QueryDict: {u'form_data': [u'{"kkz":"ALF" ....]}>

使用像这样的测试客户端

data = { 'form_data': {
                   "kkz": "ALF",
                     ..
               }
            }
....
c = Client()
response = c.post('/wizard/....',
                       data=json.dumps(data),
                       content_type="application/x-www-form-urlencoded") 

我得到了这个 坏:

POST <QueryDict: {u'{"form_data": {"kkz": "ALF" ...}>

视图无法处理。 我哪里错了?

更新 这是javascript部分

                $.ajax({
                type: 'post',
                url: '/wizard/....',
                data: {
                    form_data: JSON.stringify(form.get_data(), {})
                },

其中form.het数据返回[key:value,key:value]

的数组

解决方案:谢谢大家!

        form_data = {
            "kkz": "ALF",
              ...
        }
    c = Client()
    response = c.post('/wizard/...',
                        {'form_data': json.dumps(form_data)}
                     )

1 个答案:

答案 0 :(得分:0)

你应该已经展示了#34;你的浏览器&#34;正在创建此帖子数据。

据推测,您正在使用一些看起来像这样的Javascript:

$.post(url, { form_data: JSON.stringify(data) }, ...)

你需要遵循相同的结构,使用包含&#34; form_data&#34;的字典。键。

data = {
          "kkz": "ALF",
           ..
        }
....
response = c.post('/wizard/....',
                  data={'form_data': json.dumps(data)},
                  content_type="application/x-www-form-urlencoded")