django jquery POST开发服务器显示500状态

时间:2014-01-27 13:23:03

标签: jquery ajax django debugging

我正在尝试根据sigurdga / django-jquery-file-upload

将多个CSV文件上传到django

对javascript和jquery非常陌生我试图尽量减少对示例代码的更改。

我成功地将其更改为上传常规文件而不是图像文件,并将其上传批量的CSV。

现在我有一个简单但基本的调试问题。

我引入的一些东西导致Django开发服务器在POST期间失败并返回500状态 - 我可以在服务器的控制台输出上看到它。

[27/Jan/2014 12:29:31] "POST /banking/new/acount1234/ HTTP/1.1" 500 15103

我在各种django函数中调试了print语句,包括相关的view.form_validview.form_invalid model.save

我还添加了一个自定义handler500,看看我是否能抓住那里的东西。

我的问题是服务器正在抛出500但我无法确定在哪里进行一些调试。

所以我的问题是 - 在Django的哪个地方,我可以拦截URL处理,看看为什么它会抛出500

文档说DEBUG = True应该不会发生 - 但我知道确实发生了这种情况,因为如果我的PgSQL服务器被停止,它会在GET's上抛出500个

我看不到django调试页面,因为js页面没有给我任何状态,而且我不熟悉它来定制它。

我原本期望控制流程最终会出现在我的form_invalid中,但事实并非如此。

我应该根据示例添加基于我使用通用CBV CreateView的示例,因此可能会生成500,也许我应该为此创建源代码并创建我的基于它的自己的视图代码,然后我可以使用print's

进行检测

更新

当我使用通用CBVs时,幕后隐藏着很多东西。

我发现调试它的唯一方法是实际将CreateView和各种超类的django源临时复制到我自己的源文件中并将pdb断点放入。

总之,我假设我可以使用现成的软件包上传文件并通过覆盖视图中的form_valid或{{1}中的save来为我的模型添加其他字段}}

但是Model在我访问它之前检查对象数据是否有效,因此它为CreateViewblank=False的任何字段引发了异常。

我更改了我的模型以允许null-FalseNull除了文件之外的所有内容,并允许它通过,以便我可以在Blank填充它们。

随后又抛出了另一个form_valid,因为500处理中的异常在上传文件中使用了非ascii字符。

必须有一种更简单的方法来调试客户端脚本和CSV隐藏简单服务器页面响应的内容

1 个答案:

答案 0 :(得分:0)

如果您有DEBUG = True,那么您应该能够看到包含所需信息的堆栈跟踪。但是因为您正在执行AJAX请求,您可以通过打开开发人员工具(或firebug),转到网络选项卡并在那里查看响应来查看结果。如果您使用的是Chrome,则应该能够在那里预览页面并查看错误。

除此之外,您只需使用ipdb并在代码中的任何位置添加断点,通常在view方法中。使用pip安装并添加以下行:

python import ipdb; ipdb.set_trace()