我正在尝试根据sigurdga / django-jquery-file-upload
对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_valid
,view.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
在我访问它之前检查对象数据是否有效,因此它为CreateView
或blank=False
的任何字段引发了异常。
我更改了我的模型以允许null-False
和Null
除了文件之外的所有内容,并允许它通过,以便我可以在Blank
填充它们。
随后又抛出了另一个form_valid
,因为500
处理中的异常在上传文件中使用了非ascii字符。
必须有一种更简单的方法来调试客户端脚本和CSV
隐藏简单服务器页面响应的内容
答案 0 :(得分:0)
如果您有DEBUG = True
,那么您应该能够看到包含所需信息的堆栈跟踪。但是因为您正在执行AJAX请求,您可以通过打开开发人员工具(或firebug),转到网络选项卡并在那里查看响应来查看结果。如果您使用的是Chrome,则应该能够在那里预览页面并查看错误。
除此之外,您只需使用ipdb
并在代码中的任何位置添加断点,通常在view方法中。使用pip安装并添加以下行:
python
import ipdb; ipdb.set_trace()