【发布时间】:2015-01-27 22:26:52
【问题描述】:
我正在编写一个将 json 发布到 Django 的应用程序,但在终端中出现 500 错误
[27/Jan/2015 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 查看代码:
@csrf_exempt
def ds(request):
dicty = {}
if request.is_ajax:
if request.method == 'POST':
req = json.loads(request.body.decode("utf-8"))
obj, created =
Gamer.objects.update_or_create(
username=req.get(u'username', None),
password=req.get(u'password', None),
game_id1=req.get(u'game_id1', None))
print obj, created
dicty['username'] = req.get(u'username', None)
dicty['password'] = req.get(u'password', None)
dicty['create_at'] = str(timezone.now())
return JsonResponse(dicty)
【问题讨论】:
-
您可以调试视图以隔离和修复错误。 Apache / 控制台日志数据可以提供帮助。隔离问题的简单方法:注释代码行并填充虚假数据,直到视图正常,然后逐行取消注释。
-
您在访问
req['game_id1']时可能会得到一个KeyError,因为看起来该密钥不存在。 -
这是一个 KeyError 就像 mattm 和 Simon 说的。非常感谢!