首页 > 解决方案 > 根据帖子是否喜欢添加不同的图像

问题描述

我正在创建一个社交媒体网站,用户可以在其中互相点赞。我已经成功地完成了大部分工作。

我允许用户喜欢和不喜欢帖子,并在我的模板中显示了喜欢帖子的用户列表。

我遇到的一个问题是根据用户是否喜欢该帖子来更改图像。

我当前的实现不正确,我不确定如何解决它。目前,我在 Post 模型上有一个变量(is_liked),并且图像会根据是否为真而改变。

我的问题是,如果一个用户喜欢一个帖子,它会显示为每个用户都喜欢。

我想要它,这样每个人都看不到帖子被点赞时显示的图形,只有当他们自己喜欢它时。

模型.py:

class Post(models.Model):
    file = models.FileField(upload_to='files/')
    summary = models.TextField(max_length=600)
    pub_date = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    likes = models.ManyToManyField(User, related_name='likes')
    is_liked = models.BooleanField(default=False)

视图.py:

def likepost(request, post_id):
    if request.method == 'POST':
        tuser = request.user
        post = get_object_or_404(Post, pk=post_id)

        if post.likes.filter(id=tuser.id).exists():
            post.likes.remove(tuser)
            post.is_liked = False
            post.save()
        else:
            post.likes.add(tuser)
            post.is_liked = True
            post.save()
        return redirect('home')

home.html(模板)

    {% if post.is_liked == True %}
      <a href="javascript:{document.getElementById('like__post{{ post.id }}').submit()}"><div class="" style="position: absolute; bottom: 115px; left: 34px;"> <img src="{% static 'redheart.png' %}" width="22px"  height="22px"> </div></a>
   {% else %}
      <a href="javascript:{document.getElementById('like__post{{ post.id }}').submit()}"><div class="" style="position: absolute; bottom: 115px; left: 34px;"> <img src="{% static 'heart.png' %}" width="22px"  height="22px"> </div></a>
   {% endif %}

标签: pythonhtmldjangodjango-templates

解决方案


推荐阅读