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

Django模板字符串比较返回False,按钮未正常显示问题排查

问题排查与修复

核心错误点

你的模板判断逻辑存在两个关键问题:

  1. 模板标签语法错误:在{% if %}标签中不需要用{{ }}包裹变量,你写的"{{ users }}"会被当成固定字符串,永远无法和user.username匹配。
  2. 缺少登录状态判断:没有检查用户是否已登录,不符合你要求的两个显示条件。

另外,你传入模板的users是User对象而非字符串用户名,直接比较对象比比较用户名更可靠(可避免用户名重复等极端情况)。

修复后的模板代码

{% if user.is_authenticated and user == users %}
    <form action="listing" method="GET">
        <input class="btn btn-primary" type="submit" value="Close Listing" name="close">
    </form>
{% endif %}

可选优化(提升代码可读性)

在views.py里将变量名修改得更清晰,避免和内置的user混淆:

listing = Listing.objects.filter(title=title).first()
listing_author = listing.user

return render(request, "auctions/listing.html", {
     "listing_author": listing_author
})

对应模板修改为:

{% if user.is_authenticated and user == listing_author %}
    <form action="listing" method="GET">
        <input class="btn btn-primary" type="submit" value="Close Listing" name="close">
    </form>
{% endif %}

验证要点

  • 确认当前登录用户的user对象和发布者对象是同一个数据库实例
  • 测试未登录状态下按钮是否隐藏,登录且为发布者时是否正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:27