【发布时间】:2010-11-24 00:37:22
【问题描述】:
在使用 jQuery 进行 Ajax 调用时,有没有什么好的方法可以获取 Django 提供的调试信息?现在当我拨打电话时,我只是在 python runserver 窗口中看到一个 http/200 服务器错误,但由于调用是通过 javascript 进行的,所以我没有得到包含所有信息的调试页面。
【问题讨论】:
在使用 jQuery 进行 Ajax 调用时,有没有什么好的方法可以获取 Django 提供的调试信息?现在当我拨打电话时,我只是在 python runserver 窗口中看到一个 http/200 服务器错误,但由于调用是通过 javascript 进行的,所以我没有得到包含所有信息的调试页面。
【问题讨论】:
您可以检查返回给您的 jQuery ajax 调用的响应的内容。使用像 Firebug 这样的工具可以让这变得非常简单。
Django 仍然会返回调试页面,只是它响应的是 ajax 调用,而不是常规的浏览器请求。
让你的东西处理常规请求通常是一种很好的技术,然后只有在你确定服务器端代码正常工作时才“ajaxify”它们。
【讨论】:
您可以使用这个 sn-p:http://www.djangosnippets.org/snippets/650/ 获取纯文本回溯,以便在 firebug 中查看,而不是在 HTML 中查看。
【讨论】:
当您收到这样的 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 ...
});
这在开发和调试过程中非常有用,因为它可以让您实时检查服务器状态。您可能希望在生产环境中用更合适的方式替换故障处理程序。
【讨论】:
可能最简单的方法是关闭调试,并依赖 Django 发送的电子邮件调试消息。然而,这通常并不实用,但它确实有效。
【讨论】:
试试 django_extensions + Werkzeug。
【讨论】: