Django:在调试AJAX响应时是否有任何工具/技巧?

时间:2011-11-09 00:43:48

标签: ajax django debugging

通常,当我从ajax调用中获得500内部服务器错误时,我无法看到响应的详细信息(因为您不希望向用户显示它们)。在服务器端,我只看到像"GET /xxx/yyy/ HTTP/1.1" 500 1150336这样的行。

不修改我的客户端代码(即.html / js),除非更改是最小的并且一劳永逸,否则我可以使用任何方便的工具或技巧来查看AJAX响应的详细信息(从客户端还是服务器端或两者都有?)

使用像WireShark这样的数据包捕获程序不是一个选项,因为它不能简化我的调试过程,因此不方便。

请注意,客户端和服务器都在同一台计算机上运行。

感谢。

5 个答案:

答案 0 :(得分:15)

  1. 启用调试模式
  2. 启动Chrome
  3. 推送cmd +选项+ j(打开开发工具)
  4. 转到网络标签
  5. 点击ajax请求
  6. 点击预览或回复标签
  7. 真棒!我刚刚意识到Chrome还实现了呈现的响应。

    enter image description here

答案 1 :(得分:3)

基本python logging?出了什么问题您可以将视图设置为记录为请求,响应和任何异常。

如果你想获得一个很好的前端来管理和查看异常,你可以使用django-sentry

编辑:我认为您需要更具体地说明是否要调试前端或后端代码。理想情况下,你需要两者,虽然我的答案是基于后端调试(以确定500的),其他都是前端调试的好建议。

答案 2 :(得分:2)

使用FireBug或Chrome开发者工具。两者都允许您检查请求和对心脏内容的响应,以及更多内容。

答案 3 :(得分:1)

这是一个相当古老的问题,但是当我看到它作为参考并且有一个稍微不同的解决方案时,我想我也可以加上我的两分钱。

我使用python manage.py runserver_plus,它附带了django扩展,并为您提供了一个非常棒的调试器,能够在堆栈跟踪的每个级别打开一个shell,并且局部变量保持不变。这里的问题是,在ajax调用中,即使在预览窗口中,界面也没有正确显示。我的解决方案是找到调用javascript代码,并出错

  $.ajax({
            url : window.location.pathname,
            type : "POST",
            dataType: "json",
            data : dataPacket,
            success : function(json) {
                alert('it worked!');
            },
            error : function(xhr,errmsg,err) {
                if(xhr.status == 500){
                    document.open();
                    document.write(xhr.responseText);
                    document.close();
                }
            });

这会导致完整堆栈跟踪替换当前窗口。 快乐的调试!

答案 4 :(得分:-3)

Fiddler是你的朋友。

学习它,使用它,喜欢它。