Django模板中变量比较判断失效问题求助
问题原因及解决方案
核心原因
Django模板中的user变量是当前登录用户的User模型实例,不是单纯的用户名字符串。你打印看到的user = juan只是Django对User对象做了默认字符串格式化(显示username字段值),但它的本质还是一个对象,而非字符串。
所以你写的{% if usuario.username == user %}是在拿字符串和User对象做相等判断,二者类型完全不同,自然永远不相等,代码会一直进入else分支。而对比字符串常量'juan'时,两边都是字符串类型,判断逻辑就正常生效了。
修正方案
有两种简单的修复方式:
方式1:对比双方的username字段(字符串对比)
把判断条件改成两边都是字符串类型:
{% if usuario.username == user.username %} Nothing {% else %} <tr><td> {{usuario.username}} <img src="{% static 'assets/img/icono_writeMSJ.png' %}" height="30px"> </td> </tr> {% endif %}
方式2:直接对比User对象(实例对比)
如果usuario本身就是User模型的实例,也可以直接对比对象本身,这样更严谨:
{% if usuario == user %} Nothing {% else %} <tr><td> {{usuario.username}} <img src="{% static 'assets/img/icono_writeMSJ.png' %}" height="30px"> </td> </tr> {% endif %}
内容的提问来源于stack exchange,提问作者kapi
相关产品推荐
相关产品推荐

