首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作一个like wise按钮django

如何制作一个like wise按钮django
EN

Stack Overflow用户
提问于 2020-08-31 21:37:56
回答 1查看 32关注 0票数 0

我有一个文章模型,其中有一个投票IntegerField,现在我想让它,当用户点击它时,投票上升了一个,我设法使,然而,我怎样才能让他下次点击它下降了一个。views.py:

代码语言:javascript
复制
@login_required
def vote(request, article_id):
    article = get_object_or_404(Article, pk=article_id)
    vote, created = Vote.objects.get_or_create(article=article, user=request.user)
    if created:
        article.votes += 1
        article.save()
        return JsonResponse(data = {"vote": "Voted! Thank you for the vote."})
    return JsonResponse(data = {"vote": "You already voted for this article."})

我有一个投票模型,其中有一个用户和文章外键。ajax文章中“喜欢”的按钮:

代码语言:javascript
复制
<button id="vote" class="button">vote</button>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script>
      var voted = false;
        $("#vote").click(function (e) {
          if (!voted) {
            e.preventDefault()
            var upvotes = $("#total_votes").html()
            voted = true;
            var updatedUpVotes = parseInt(upvotes) + 1
            $("#total_votes").html(updatedUpVotes)
            $.ajax({
              url: 'vote/',
              method: "GET",
              data: {},
              success: function (data) {
                console.log(data)
              },
            })
          }
        })
      </script>

现在另一个问题是,当用户单击like按钮刷新页面时,它在UI中是1,而不是在数据库中,我如何保存它,以便当他看到他已经喜欢的文章时,按钮是不同的,当他单击vote时,按钮是1。

EN

回答 1

Stack Overflow用户

发布于 2020-08-31 23:11:11

您可以添加一个查询字符串,指示用户选择投票的选项(向上投票/向下投票)。

您可以通过添加?type=downvote?type=upvote来指明这一点(这是可选的,您甚至可以输入type=0/1)。所以它会像url: 'vote/?type={upvote or downvote}',一样。

您需要区分javascript中的两个选项。我不能在这里给你例子,因为我不知道它的结构,但它可以像$("#upvote_button").click((e) => //ajax request一样基本,另一个用于下投票按钮。

现在,在后端,您将拥有自己的request.GET["type"],您可以根据该类型来决定是否要对文章进行投票。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63671887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档