所以我想根据用户所在的组更改显示的信息。
所以:
{% if user.is_staff %}
......
这有效,但是当我尝试做的时候
{% if user.is_China %}
这个小组不起作用?
我是否需要做一些特定的事情来确定用户是否属于某个群组?
答案 0 :(得分:2)
您可能需要的是自定义模板标记:
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name='is_group')
def is_group(user, group_name):
group = Group.objects.get(name=group_name)
return group in user.groups.all()
在你的模板中:
{% if user|is_group:"group" %}
<p>User belongs to group
{% else %}
<p>User doesn't belong to group</p>
{% endif %}
答案 1 :(得分:1)
Fazil Zaid答案的唯一注意事项是,如果group_name找不到任何组,则会引发 Group.DoesNotExist 异常。在我看来,如果组不存在,最好处理此异常并返回 False 。
@register.filter(name='is_group')
def is_group(user, group_name):
try:
group = Group.objects.get(name=group_name)
return group in user.groups.all()
except Group.DoesNotExist:
return False
有关异常的详细信息,请参阅https://docs.djangoproject.com/en/1.11/ref/models/instances/#django.db.models.Model.DoesNotExist。