【发布时间】:2014-01-27 13:23:03
【问题描述】:
我正在尝试根据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 函数中调试打印语句,包括相关的view.form_valid、view.form_invalidmodel.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 或Model 中的save 来为我的模型添加其他字段。
但是CreateView 在我访问它之前检查对象数据是否有效,因此它对blank=False 或null-False 的任何字段抛出异常。
我更改了我的模型以允许 Null 和 Blank 除了文件之外的所有文件,它允许它通过,以便我可以将它们填充到 form_valid。
随后,由于我的 CSV 处理中出现异常,上传文件中包含非 ascii 字符,它又抛出了另一个 500。
必须有一种更简单的方法来调试客户端脚本和 JSON 隐藏简单服务器页面响应的东西
【问题讨论】:
-
您可以使用浏览器的开发者工具查看完整的 Django 错误页面。
-
我该怎么做(
Chrome)? -
正如我所说,使用 Chrome 开发人员工具。在网络上有很多使用它们的指南。
标签: jquery ajax django debugging