如何在django中调试ajax请求

时间:2013-01-05 11:55:41

标签: ajax django

我知道例如:

def home(request):
    if request.method == 'POST':
        k = 'p' % 1
        return HttpResponse(simplejson.dumps(dict()),  mimetype='application/javascript')
    else:
        k = 'p' % 1
        return render_to_response('index.html',locals());

url(r'^$', 'app.home'),

如果我使用浏览器访问主页,django将向我返回一个调试页面并显示k = 'p' % 1

中的错误

但如果我使用$.ajax()向此视图发送帖子,则Chrome控制台只显示POST http://(some url here):8000/ 500 (INTERNAL SERVER ERROR)

那么调试第二种情况有什么好方法吗? 我不知道调试django,有没有人有更好的方法来调试django?

感谢

3 个答案:

答案 0 :(得分:1)

查看sentry(和相应的乌鸦)

Network标签应该能够显示请求和相应的响应。我相信如果请求是ajax,更新的django版本甚至会给你一个更简单的堆栈跟踪版本。

答案 1 :(得分:0)

ajax中有一个error CallBack。它将显示实际错误。

$.ajax({
        type: 'POST',
        url: '{% url 'url_name_for_your_view_here' %}',
        data: {'csrfmiddlewaretoken': '{{csrf_token}}'},
        dataType: "text",
        success: function(response) {
            //do something here if everything goes well
        },
        error: function(rs, e) {
            alert(rs.responseText); //throw actual error, just for debugging purpose
            alert('Oops! something went worng..'); // alert user that something goes wrong
         }
     });

答案 2 :(得分:0)

有许多第三方应用程序可以更轻松地调试ajax。我过去曾成功使用过此功能:https://github.com/yaniv-aknin/django-ajaxerrors

或者,如果您不想使用应用,Chrome开发者工具可能就足够了,正如此主题中所建议的那样:Django: Are there any tools/tricks to use on debugging AJAX response?