首页 > 解决方案 > 用户点击赞按钮页面后不应刷新(重定向)并更新赞数

问题描述

当用户点击喜欢帖子时,网页不应该刷新(重定向)并且应该更新喜欢的计数。我怎样才能做到这一点,请帮助我。

这是我的代码块

<a style="{% if request.session.email %}pointer-events: auto;{% else %}pointer-events: none;{% endif %}"
    href="/post_comment_like/{{j.id}}">
    <i class="fa fa-thumbs-o-up" aria-hidden="true"
                                       style="color: gray;"></i></a>

Views.py

def post_comment_like(request, id):
    if (request.session.get('email') is None) or (request.session.get('email') == ""):
        return HttpResponseRedirect("/home")

    email = request.session.get('email')
    query = Comment.objects.get(id=id)
    obj_id = query.object_id
    query_like = Comment_like.objects.filter(email=email)
    query_like = Comment_like.objects.filter(email=email, object_id=query.id, dislike_comment="1").first()
    if query_like:
        query_like.delete()
    save_form = Comment_like(email=email, user_name=request.session.get('name'),
                                content_type=query.content_type,
                                object_id=query.id,
                                content=query.content,
                                flag_reply=query.flag_reply,
                                flag_comment_id=query.flag_comment_id,
                                flag_level=query.flag_level,
                                like_comment='1')
    save_form.save()
    query.like_comment = '1'
    query.dislike_comment = '0'
    query.save()

    # return redirect(request.META.get('HTTP_REFERER'))
    return HttpResponseRedirect(reverse('detail', args=[str(obj_id)]))

标签: pythondjango

解决方案


至于更新页面上的点赞数,这是关于带有 ajax 请求的 javascript。

  1. 例如,如果有人喜欢前端的帖子,那么在用户单击“赞”按钮的那一刻,应该有一个事件监听器将 ajax 请求发送到端点,就像这样
fetch('https://example/api/posts/{post_id}/likes', {
methods:'POST',
body : JSON.stringify(data),
})
  1. django 代码上的端点应该接收请求并增加数据库上的点赞数

  2. 前端(javascript 代码)最终应该再次发送另一个 ajax 请求以获取更新的点赞数

fetch('https://example/api/posts/{post_id}/likes')

推荐阅读