2017-06-13 74 views
1

所以我想改變基於用戶所在的組所顯示的內容信息檢查Django的用戶組

這樣:

{% if user.is_staff %} 
...... 

這工作,但是當我嘗試做

{% if user.is_China %} 

這組不工作?

是否有具體的事情,我需要做的,以確定用戶是否屬於一個組?

+0

可能的重複https://stackoverflow.com/questions/4789021/in-django-how-do-i-check-if-a-user-is-in-a-certain-group – mikep

+0

is_staff is inbuilt attr對於django管理員模式用戶,is_china不是。 要能夠使用is_china,您需要一個定製用戶模型,您可以在其中定義is_china attr。 – Amar

回答

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

到法齊爾·扎伊德答案唯一要注意的是,Group.DoesNotExist異常會如果group_name沒有找到組,將被提出。在我看來,處理這個異常會更好,並且返回如果組不存在,則返回假

@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