在网上浏览了几天,寻找一种直接的方式,使用标准的用户/组功能执行以下操作:
{% if user.is_in_group 'foo' %}Hello Foo user
{% endif %}
扩展Django用户类似乎不太好,我不确定是否可以使用过滤器为if生成布尔值.将user_groups列表添加到上下文似乎很邋..
在Django中处理这个问题的最佳方法是什么?
提前致谢
过滤器当然可以返回一个在if中使用的布尔值,这是迄今为止最好的解决方案.扩展User类无济于事,因为无论如何都无法将参数传递给模板中的方法.
过滤器可以像下面这样简单:
@register.filter def is_in_group(user, group_name): return user.groups.filter(name=group_name).exists()
你会像这样使用它:
{% if user|is_in_group:"foo" %}