2016-03-22 12 views
2

Forum uygulamasına bir 'beğen' düğmesi eklemek için tangowithdjango talimatını takip ediyorum.neden benim upvote butonum sadece ilk mesaj için çalışıyor?

html dosyası ve 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>

views.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) 

urls.py

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

whe n #upvote düğmesini, #like_count oranında bir artışı tıklayın. Ancak, sadece ilk yazı için çalışır. Mesajların kalanını tıklarsam, hiç yanıt alamıyorum.

+0

aynı sayfada birden düğmeleri var mı? Bu, tüm ur düğmeleri için aynı kimlik parametresini kullandığınız anlamına gelir. Kimlik bir html öğesi için bir kimliktir, belirli bir html belgesinde benzersiz olması gerekir. –

cevap

3

upvote ürününü id olarak vermemenizi öneririz, çünkü id, belgenizdeki benzersiz bir öğeyi ifade eder.

$(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); 

    }); 
    }); 
}); 

ve html gibi görünmelidir,

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

Teşekkürler! Bana gerçekten çok yardımcı oluyor. Ancak ikinci düğmeyi tıkladığımda, ilk "like_count" bir artış gösterdi. sonra sınıf olarak 'like_count' vermeyi denedim. Bu sefer iki 'like_count' artmıştır ... – ming

+0

@ming şimdi benzersiz olmalıdır. Güncellenmiş gönderimi kontrol et. –

+0

Teşekkür ederiz! şimdi eşsiz! gerçekten yardımınız için minnettarım :) – ming

İlgili konular