从测试客户端发布时,Django POST数据字典为空

时间:2014-03-22 16:22:42

标签: ajax django testing

我正在尝试在我的Django项目中测试和AJAX视图。当从JQuery提交帖子时,可以在Django View中正确访问数据,但是当我尝试对Django测试客户端进行查询时,它是真实的。

以下是我使用的代码:

视图

def add_item(request):
    if request.is_ajax() and request.method == 'POST':

        post_data = request.POST
        print post_data   ## <----- THIS IS EMPTY

        name = post_data.get('name')

        # Render the succes response
        json_data = json.dumps({"success":1})
        return HttpResponse(json_data, content_type="application/json")
else:
    raise Http404

测试

class TestAddItem(TestCase):  
    def test_some_test(self):
        data = {
        'description':"description",      
        }

        response = self.client.post('theurl', data, content_type='application/json')

任何想法我可能做错了什么? 我也试过没有内容类型,也使用像thurl/?name=name这样的简单网址而没有成功。 任何帮助将不胜感激。

奥利弗

1 个答案:

答案 0 :(得分:0)

尝试不同的参数格式组合,内容类型等。 我找到了一个有效的解决方案:

response = self.client.post(reverse('theurl'), data, 
             **{'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})

我在请求的POST参数上得到以下字典:

<QueryDict: {u'name': [u'name']}>

编辑我喜欢测试:)