为什么我的向上投票按钮只适用于第一篇文章?

2024-06-28 20:38:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我按照tangowithdjango中的说明将“like”按钮添加到我的论坛应用程序中。你知道吗

html文件和javascript:

<script> $(document).ready(function(){ $("#upvote").click(function(){ var postid; postid = $(this).attr("data-r-id"); $.get('/upvote/', {post_id: postid}, function(data){ $('#like_count').html(data); }); }); }); </script>
<a id="upvote" data-r-id="{{r.id}}" class="label-info label pull-right">赞<div id="like_count">{{r.upvotes}}</div></a>

你知道吗视图.py你知道吗

def upvote(request):
    post_id = None
    if request.method == 'GET':
        post_id = request.GET['post_id']
    votes = 0
    if post_id:
        p = post.objects.get(id=post_id)
        if p :
            votes = p.upvotes + 1
            p.upvotes = votes
            p.save()
    return HttpResponse(votes)

你知道吗网址.py你知道吗

urlpatterns = patterns(
    url(r'^upvote/$', 'upvote', name='upvote'),
)

单击“upvote”按钮时,“like”计数将增加1。然而,它只适用于第一篇文章。如果我点击其余的帖子,我一点反应都没有。你知道吗


Tags: iddatagetifrequesthtmlscriptfunction
1条回答
网友
1楼 · 发布于 2024-06-28 20:38:05

我建议您将upvote作为类而不是id,因为id引用文档中的唯一元素。你知道吗

$(document).ready(function(){
  $(".upvote").click(function(){
    var postid;
    postid = $(this).attr("data-r-id");
    $.get('/upvote/', {post_id: postid}, function(data){
               $('#like-count-' + postid).html(data);

    });
  });
});

你的html应该是这样的

<a data-r-id="{{r.id}}" class="label-info label pull-right upvote">赞<div id="like-count-{{r.id}}">{{r.upvotes}}</div></a>

相关问题 更多 >