将json发布到Django,但得到500

2024-10-02 22:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个应用程序来将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}$

Tags: django代码jsonobj应用程序http终端错误
1条回答
网友
1楼 · 发布于 2024-10-02 22:31:40

当您收到一个500内部服务器错误时,可以假设您的视图处理程序代码中存在问题。很难说到底是什么引起的,所以你应该试着弄清楚为什么会这样。通过查看代码,我可以看到两个可能导致此错误的因素。在

首先使用dict作为变量名,这可能是个坏主意,因为dict是python中的一个内置类型。在

另一个可能的原因是您访问reqdict的方式。您访问的是usernamepassword和{}。如果dict中缺少任何一个,它将抛出一个KeyError异常。我喜欢使用req.get('username', None)来访问dict(如果愿意,可以用另一个默认值替换None)。解决这个问题的另一种方法是try/catch异常处理。在

另外,根据您的游戏玩家模型,尝试使用现有用户名创建一个(假设您有unique=True)可能也会抛出异常,因此您也应该处理它(我认为^{}在这里可能很方便)。在

通常在处理此类问题时,请在浏览器中使用检查器。它允许您查看请求期间发送和接收的所有数据,这意味着(如果您正在DEBUG模式下运行django),您还可以在检查器中看到默认的堆栈跟踪页面。它应该有一些有价值的迹象来说明问题的起因。另一个选择是write a small middlewareenable extended error logging将错误记录到strout/stderr。在

相关问题 更多 >