Django转储JSON数据

时间:2011-10-13 19:25:20

标签: json ajax django post

我正在尝试输入一个单词并通过ajax显示在页面上。有一些我很想念的简单......

所以我用Jquery发送这样的信息:

$.ajax({
url: url,
type:"POST",
data:{'word': word},
success: function(data){
       //do something 
}
});

并且信息进入视图并保存到DB中。当我尝试返回新单词时会出现问题:

def add_word(request, lecture_id):
    l = get_object_or_404(Lecture, pk=lecture_id)
    if request.method == "POST":
        #see if there is a value with p
        if request.POST.has_key('word') and request.POST['word'] != "":
            success = {}
            try:
                oldWord = l.post_set.get(word=request.POST['word'])
            except:
                newWord = l.post_set.create(word=request.POST['word'], count = 1)
                success = {'new': str(newWord.word), 'count': str(newWord.count)}
            else:
                oldWord.count += 1
                oldWord.save()
                success = {'old': str(oldWord.word), 'count': str(oldWord.count)}
            return HttpResponse(json.dumps(success), mimetype="application/javascript")
    return HttpResponse(reverse('post.views.lecture_display', args=(l.id,)))

我得到500错误......

[13/Oct/2011 15:14:48] "POST /lecture/3/add HTTP/1.1" 500 66975

2 个答案:

答案 0 :(得分:2)

没有看到追溯,我的猜测是失败的是[其中之一]:

# A) This path is not resolving correctly (see named-URLs in Django's docs)
reverse('post.views.lecture_display', args=(l.id,))

# B) This word has unicode data, which can't simply be passed to ``str``
str(oldWord.word)

直接在浏览器中打开URL,您将获得默认的Django traceback,500视图。

答案 1 :(得分:1)

我认为你需要学习调试而不是特定的修复。

  1. 尝试打开没有发布数据的网址,看看是否存在语法或名称错误。
  2. 如果问题仍然存在,请使用ipdbpudb包,在视图中插入以下行并分析代码中发生的情况:

    def myview(request,id):     import ipdb; ipdb.set_trace()

  3. 使用Chrome开发者工具或Firebug查看服务器输出内容以及打开的网址。另请查看Django Debug ToolbarWerkzeug。调试工具栏可以显示所有呈现的模板和所有局部变量。 Werkzeug还可以直接从浏览器中为调用堆栈的任何位置提供调试shell。