在没有刷新页面的情况下在Django中实现“喜欢这个”按钮

时间:2014-02-14 23:02:56

标签: jquery python ajax django

我正在尝试复制ruby-toolbox(心形按钮)中使用的“喜欢项目”功能。

当您单击“喜欢”按钮时,它会将该项目添加到您喜欢的项目列表中,但它不会刷新页面。按钮的html只包含一个链接:

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

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

(1)此按钮如何工作?

(2)如何使用Django复制它?或者,如果不可能,我该怎么做?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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