【问题标题】:Getting Django debug information when using Ajax call?使用 Ajax 调用时获取 Django 调试信息?
【发布时间】:2010-11-24 00:37:22
【问题描述】:

在使用 jQuery 进行 Ajax 调用时,有没有什么好的方法可以获取 Django 提供的调试信息?现在当我拨打电话时,我只是在 python runserver 窗口中看到一个 http/200 服务器错误,但由于调用是通过 javascript 进行的,所以我没有得到包含所有信息的调试页面。

【问题讨论】:

    标签: jquery django


    【解决方案1】:

    您可以检查返回给您的 jQuery ajax 调用的响应的内容。使用像 Firebug 这样的工具可以让这变得非常简单。

    Django 仍然会返回调试页面,只是它响应的是 ajax 调用,而不是常规的浏览器请求。

    让你的东西处理常规请求通常是一种很好的技术,然后只有在你确定服务器端代码正常工作时才“ajaxify”它们。

    【讨论】:

    • 令人讨厌的是它都是未解析的 HTML 格式。我想我可以将它加载到一个 div 中......
    • 实际上 Firebug 可以在 Firefox 中将返回的 HTML 作为新选项卡打开,因此您可以以正确的格式查看它。
    【解决方案2】:

    您可以使用这个 sn-p:http://www.djangosnippets.org/snippets/650/ 获取纯文本回溯,以便在 firebug 中查看,而不是在 HTML 中查看。

    【讨论】:

      【解决方案3】:

      当您收到这样的 AJAX 错误时,您可以将当前文档内容替换为从服务器返回的调试/错误文档。例如,您可以执行以下操作:

      $.ajax({
          url: 'failing_controller/',
          type: 'POST'
      })
          .fail(function (jqXHR, textStatus, errorThrown) {
              document.open();
              document.write(jqXHR.responseText);
              document.close();
          })
          .success(function (data, textStatus, jqXHR) {
              // ... handle data ...
          });
      

      这在开发和调试过程中非常有用,因为它可以让您实时检查服务器状态。您可能希望在生产环境中用更合适的方式替换故障处理程序。

      【讨论】:

        【解决方案4】:

        可能最简单的方法是关闭调试,并依赖 Django 发送的电子邮件调试消息。然而,这通常并不实用,但它确实有效。

        【讨论】:

          【解决方案5】:

          试试 django_extensions + Werkzeug。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-03
            • 2013-01-10
            • 1970-01-01
            相关资源
            最近更新 更多