我正在编写一个应用程序来将json发布到Django,但是在终端中出现了500个错误
[2015年1月27日20:50:38]“POST/datasave/ds/HTTP/1.1”500 10414
这是我的jQuery代码:
$(function() {
$('#upload').click(function() {
var json_obj = {
username: $('#username').val(),
password: $('#password').val(),
game_id1: '123',
csrfmiddlewaretoken: '{{ csrf_token}}'
};
$.post("http://192.168.0.109:8000/datasave/ds/", JSON.stringify(json_obj),
function(data) {
alert("OK");
},
"json");
})
})
和Django视图代码:
^{pr2}$
当您收到一个500内部服务器错误时,可以假设您的视图处理程序代码中存在问题。很难说到底是什么引起的,所以你应该试着弄清楚为什么会这样。通过查看代码,我可以看到两个可能导致此错误的因素。在
首先使用
dict
作为变量名,这可能是个坏主意,因为dict
是python中的一个内置类型。在另一个可能的原因是您访问}。如果dict中缺少任何一个,它将抛出一个
req
dict的方式。您访问的是username
、password
和{KeyError
异常。我喜欢使用req.get('username', None)
来访问dict(如果愿意,可以用另一个默认值替换None
)。解决这个问题的另一种方法是try/catch异常处理。在另外,根据您的游戏玩家模型,尝试使用现有用户名创建一个(假设您有} 在这里可能很方便)。在
unique=True
)可能也会抛出异常,因此您也应该处理它(我认为^{通常在处理此类问题时,请在浏览器中使用检查器。它允许您查看请求期间发送和接收的所有数据,这意味着(如果您正在
DEBUG
模式下运行django),您还可以在检查器中看到默认的堆栈跟踪页面。它应该有一些有价值的迹象来说明问题的起因。另一个选择是write a small middleware或enable extended error logging将错误记录到strout
/stderr
。在相关问题 更多 >
编程相关推荐