我正在尝试输入一个单词并通过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
答案 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)
我认为你需要学习调试而不是特定的修复。
如果问题仍然存在,请使用ipdb
或pudb
包,在视图中插入以下行并分析代码中发生的情况:
def myview(request,id): import ipdb; ipdb.set_trace()
使用Chrome开发者工具或Firebug查看服务器输出内容以及打开的网址。另请查看Django Debug Toolbar和Werkzeug。调试工具栏可以显示所有呈现的模板和所有局部变量。 Werkzeug还可以直接从浏览器中为调用堆栈的任何位置提供调试shell。