【发布时间】:2016-10-28 15:56:53
【问题描述】:
我正在尝试学习 django 等等。 计算磁带中每个帖子的点赞数时遇到问题。问题是我无法获得帖子的 ID。 如果我刷新页面,喜欢的数量会发生变化。但是用ajax改变它是真正的问题。 请解释一下,如果单击“喜欢”按钮,如何让磁带中每个帖子的点赞数变化。
Ajax 代码。
{% block jquery %}
function updatePostLikesCount(){
var postlikescount = $(".post-likes-count")
$.ajax({
type: "GET",
url: "/like_post/{{ post.id }}/post_likes_count/",
success: function(data){
postlikescount.html(data.count);
},
error: function(response, error){
}
})
}
$(".post-like").click(function(event){
var img = $(this);
event.preventDefault();
$.ajax({
url: img.parent().attr('href'),
success: function(){
updatePostLikesCount();
},
error: function(response, error){
}
})
});
{% endblock %}
这是帖子的磁带。
{% for post in tape %}
...
{{ post.text }}
...
<a href="/like_post/{{ post.id }}/">
<img class="post-like" src="{% static "" %}"/>
</a>
<span class="post-likes-count" >
{{ post.like.liked_users.count }}
</span>
{% endfor %}
这是一个统计帖子点赞数的视图
def post_likes_count(request, post_id, *args, **kwargs):
if request.is_ajax():
like = Like.objects.get(post_id=post_id)
if like.liked_users.count == None:
count = 0
else:
count = LikeTimestamp.objects.filter(like_id=like.id).count()
return JsonResponse({
'count': count,
})
else:
raise Http404
否则,我尝试使用 like 重新加载页面元素,但失败了 :-)
【问题讨论】:
-
你从哪里得到 {{post.id}} 值,请让页面重新加载,然后右键单击页面并检查 {{post.id}} 是否被实际替换id,这只是在我提出解决方案之前进行确认。
-
嗯...
$(".post-like").click(function(event){中的 id 没有问题function updatePostLikesCount(){和url: "/like_post/{{ post.id }}/post_likes_count/",有问题,它试图发送此 urlurl: "/like_post//post_likes_count/",
标签: javascript jquery ajax django posts