2011-10-13 38 views
1

我試圖輸入一個單詞,並通過ajax將其顯示在頁面上。有一些簡單的我失蹤...Django轉儲JSON數據

所以我發送這樣的信息使用jQuery:

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

和信息進入該視圖並保存到數據庫。在問題發生時,我嘗試返回新詞:

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

那500錯誤是追溯。你應該在你的瀏覽器中訪問該URL,看看它是什麼。 –

+1

您還必須發佈整個視圖。 –

回答

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

@captDaylight - 什麼最終成爲例外? – orokusaki

1

我認爲你需要學習調試,而不是一個特定的修復。

  1. 嘗試打開該URL沒有發佈數據,看看是否有語法或名稱錯誤。
  2. 如果問題仍然存在,使用ipdbpudb包,插入在視圖下面一行,並分析你的代碼裏面發生了什麼:

    高清MyView的(請求ID): 進口IPDB; ipdb.set_trace()

使用Chrome Developer Tools或Firebug查看服務器輸出的內容以及打開的URL。還請看看Django Debug ToolbarWerkzeug。調試工具欄可以顯示所有已渲染的模板以及所有本地變量。 Werkzeug還可以在瀏覽器的任何地方給你一個調試shell。