Django模板字符串比较返回False,按钮未正常显示问题排查
问题排查与修复
核心错误点
你的模板判断逻辑存在两个关键问题:
- 模板标签语法错误:在
{% if %}标签中不需要用{{ }}包裹变量,你写的"{{ users }}"会被当成固定字符串,永远无法和user.username匹配。 - 缺少登录状态判断:没有检查用户是否已登录,不符合你要求的两个显示条件。
另外,你传入模板的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
相关产品推荐
相关产品推荐

