You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板IF语句失效:点赞按钮状态无法正确切换

Django模板IF判断失效问题修复方案

核心问题

has_liked列表存储的是字符串类型的帖子ID,而模板中post.id是整数类型,二者值相同但类型不匹配,导致{% if post.id in has_liked %}的判断逻辑无法生效。

修复方案(二选一即可)

方案一:在后端转换类型

修改views.py中向has_liked添加元素的代码,将字符串ID转为整数:

def index(request):
    # ... 其他代码 ...
    has_liked = []
    if request.user.is_authenticated:
        user_likes = Like.objects.filter(user=request.user.username)
        # 将字符串类型的post ID转为整数存入列表
        has_liked = [int(like.post) for like in user_likes]
    # ... 其他代码 ...

方案二:在模板中转换类型

修改HTML模板里的判断条件,把整数类型的post.id转为字符串后再判断:

{% if post.id|stringformat:"i" in has_liked %}
    <button class="btn4_{{post.id}}"> Unlike </button>
{% endif %}

额外优化建议

  • 原代码中用try-except捕获所有异常的做法不严谨,建议先判断用户是否登录,再查询该用户的点赞记录,既提升查询效率,又避免不必要的异常捕获。

内容的提问来源于stack exchange,提问作者pretzul duck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:05:39