python - 根据帖子是否喜欢添加不同的图像
问题描述
我正在创建一个社交媒体网站,用户可以在其中互相点赞。我已经成功地完成了大部分工作。
我允许用户喜欢和不喜欢帖子,并在我的模板中显示了喜欢帖子的用户列表。
我遇到的一个问题是根据用户是否喜欢该帖子来更改图像。
我当前的实现不正确,我不确定如何解决它。目前,我在 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 %}
解决方案
推荐阅读
- php - 数据表网 | 表 id=tbl_portfolio - 无效的 JSON 响应
- android - 为什么在 onResume 中调用 startLocationUpdates,在 onPause 中调用 stopLocationUpdates?
- google-chrome - 扩展上下文无效。Chrome 扩展程序
- javascript - AWS API Gateway CORS-header 'Access-Control-Allow-Origin' 缺失
- svg - 如何优化 SVG 路径?
- python - 我的项目在 conda 环境中使用什么包
- java - 从 Java 运行时调用 Python 脚本 OSError
- django - Django 类视图 - MultipleObjectsReturned 错误
- sql - 完成状态出现 2 次及以上时的返回值
- longtable - Longtable、 papaja 和单行距