我想在Django中创建一个喜欢/不喜欢的按钮系统,但不知道如何做它的最后一部分,即使按钮消失/改变为按下的按钮的赞美。 基本上,我希望在我的模板上有一个“喜欢”按钮,一旦按下它,然后我希望类似按钮消失/切换到“不像”按钮,这样用户可以根据需要撤消他们的喜欢,类似于Facebook的。我该怎么做呢?
这是我的按钮模板代码(隐藏部分用于确定类似按钮所属的帖子):
<form action="#" method="get">
<input type="hidden" value="{{postset.id}}" name="postset_id" size="1"/>
<input type="submit" class="btn" value="+1" name="postlikebtn">
</form>
这是我对这个按钮的简单views.py(我使用djangoratings应用程序来管理投票,这就是我的代码在最后一行引用的内容):
if (request.GET.get('postlikebtn')):
postid = request.POST['postset_id'] #get the ID of the post that was liked
c = newpost.objects.get(id=postid) #getting the post
c.rating.add(score=1, user=request.user, ip_address=request.META['REMOTE_ADDR']) #add a vote
那么我可以添加什么基本上使按钮在按下时消失?然后理想情况下用另一个按钮替换它,“不像”按钮? 提前致谢!
答案 0 :(得分:1)
使用Javascript(特别是像jquery这样的库)将使这件事更容易和直观。而且我也不会为此使用GET,因为您在数据库中进行更改,所以我会使用POST。
如果您不想使用Javascript,请在request.GET.get('postlikebtn')
函数中,在数据库中投票/喜欢后,再次呈现该页面。
以下是一些示例,在按下&#39;之前,您可以按照以下方式呈现页面:
<ul>
<li name="postset_id" value="{{postset.id}}" class="not-liked"> ... </li>
...
</ul>
因此,使用CSS,您可以根据需要设置样式。现在,一旦按下like
,您再次渲染页面,在这种情况下,您将替换该类:
<ul>
<li name="postset_id" value="{{postset.id}}" class="liked"> ... </li>
...
</ul>
由于你没有提供有关模板的更多细节,我不得不假设。如果你可以发布,我可以相应地编辑我的答案。
我还将简要介绍如何使用jquery&amp; amp;阿贾克斯。基本上,您将执行以下步骤: