在Django中仅对特定用户显示HTML Span的实现问题
Django实现特定用户显示“Approvals”标签的修复方案
原函数存在的问题
- 类方法参数顺序错误:在Django视图类的自定义方法中,
self必须作为第一个参数,原函数将request放在self前面,导致调用时参数不匹配 - 用户判断逻辑错误:
request.user是Django的User模型实例,不能直接与字符串邮箱比较,需要访问其email属性来判断
修正后的代码实现
1. 修复自定义方法
def is_approval_supported(self, request): # 比较用户实例的email属性与目标邮箱 if request.user.email == 'abcd@mail.com': return True return False
2. 修正视图中变量传递的调用
在视图类的get_context_data方法中,需要传入当前请求对象request:
def get_context_data(self, **kwargs): context_data = super().get_context_data(**kwargs) # 传入request参数调用方法 context_data['show_approval'] = self.is_approval_supported(self.request) return context_data
额外注意事项
原模板代码中的</a>标签没有对应的起始标签,建议检查模板结构,避免无效HTML:
{% if show_approval %} <span>Approvals</span> {% endif %}
内容的提问来源于stack exchange,提问作者Milind Sahu
相关产品推荐
相关产品推荐

