2014-02-14 48 views
1

我試圖複製ruby-toolbox(心臟按鈕)中使用的「like project」功能。在Django中實現「像這樣」按鈕而不刷新頁面

當你點擊「like」按鈕時,它會將該項目添加到你喜歡的項目列表中,但它不會刷新頁面。該按鈕的HTML包含一個鏈接:

<a href="/projects/vanity/like" class="icon ... liked" id="like_1953"></a> 

所以,我真的很想知道兩件事。

(1)此按鈕是如何工作的?

(2)如何使用Django複製它?或者,如果這是不可能的,我該怎麼做?

非常感謝任何幫助。

回答

3

這裏是Ajax。當您需要更新頁面的內容而不重新加載頁面時,ajax就是解決方案。它在Django中如何工作?這取決於。在一個複雜的情況下,render_to_responsejquery.load(url)非常實用。在你的簡單情況下,你只需要發送一個Ajax調用到你的視圖,閱讀答案並相應地更新DOM元素。

該按鈕是一個陷阱。我無法在頁面中找到JavaScript,但肯定會有一些JS控制這些鏈接。他們至少需要:

  • 更新鏈接的圖像hover,更改或切換類,或直接設置圖像的網址。
  • 閱讀鏈接ID並只保留'like_'後的字符串,它將表示數據庫中對象的主鍵。
  • 使用$.get$.load或任何Ajax函數向服務器發送Ajax請求。他必須使用GET或POST來發送對象ID。
  • 等待答案(或不)並更新DOM。

如何使它在Django中工作?就像你會編寫正常的視圖一樣!

  • urls.py中的常用條目創建普通視圖。按照正常Like頁面的方式對視圖進行編碼。例如加載用戶,檢查是否已經喜歡,如果不喜歡,否則不像。最後一行會改變。你可以使用HttpResponse返回一個json對象或者一個字符串,比如'0'代表'不喜歡','1'代表'喜歡'。

如果您需要更多詳細信息,最近的教程here

+0

正是我要去的,謝謝 – randomcastle