尝试在django中处理json时出现内部服务器错误

时间:2013-05-15 11:45:56

标签: jquery python ajax django post

我正在尝试接收从我的jquery post调用发送的json对象,如下面的代码所示。

时我收到“POST OK”回调
simplejson.loads(request.POST) 

被评论。但是,一旦我尝试做一些事情请求我得到内部服务器错误500.任何想法或任何其他方式来处理json?

views.py

@csrf_exempt
def post_post(request):
print 'post_post'
if request.method == 'POST':
    print 'POST'
    messageData = simplejson.load(request.POST)
    return HttpResponse(simplejson.dumps("POST OK!"))
else:   
    return HttpResponse(simplejson.dumps("POST NOT OK!"))

projectViewModel.js

    var m = "Hello World";
        console.log(m);
        $.ajax({
        url: 'postNewPost/',
        type: 'POST',
        dataType: 'json',
        data: {client_response: JSON.stringify(m)},
         success: function(result) {
                    console.log(result);
                } 
        });

1 个答案:

答案 0 :(得分:2)

这是因为您正在尝试将字典传递给loads()方法。 request.POST是一个带有参数的字典。您可以使用request.raw_post_data获取原始内容。

在Django中也不推荐使用simplejson,如果你使用的是Python 2.6+,你应该只使用Python json包(import json

同样在你的js代码中你传递param client_response和json。在这种情况下,您只需要将request.POST['client_response']传递给loads()方法。但更好的方法是直接传递json。

  data: JSON.stringify(m)