Django模板if判断失效:已登录用户项目匹配条件始终不成立
问题分析与解决
核心原因:类型不匹配
你看到{{ projectuser.User }}和{{ user.username }}输出一致,是因为Django模板渲染User对象时,会自动调用其__str__方法(默认返回用户名),但实际上projectuser.User是User模型的实例对象,而user.username是字符串类型的用户名。直接用对象和字符串做相等比较,结果必然为False。解决方法
修改条件判断,比较两者的username属性即可:{% if projectuser.User.username == user.username %}额外优化建议
- Django模型字段名通常遵循小写命名规范,建议将模型中的
User字段改为user,既符合PEP8规范,也避免与User模型类名混淆。 - 若后续遇到类似类型排查问题,可在模板中添加调试输出查看变量实际类型:
{{ projectuser.User|pprint }}
- Django模型字段名通常遵循小写命名规范,建议将模型中的
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

