所以我想改變基於用戶所在的組所顯示的內容信息檢查Django的用戶組
這樣:
{% if user.is_staff %}
......
這工作,但是當我嘗試做
{% if user.is_China %}
這組不工作?
是否有具體的事情,我需要做的,以確定用戶是否屬於一個組?
所以我想改變基於用戶所在的組所顯示的內容信息檢查Django的用戶組
這樣:
{% if user.is_staff %}
......
這工作,但是當我嘗試做
{% if user.is_China %}
這組不工作?
是否有具體的事情,我需要做的,以確定用戶是否屬於一個組?
也許你需要的是一個自定義的模板標籤:
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 %}
到法齊爾·扎伊德答案唯一要注意的是,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。
可能的重複https://stackoverflow.com/questions/4789021/in-django-how-do-i-check-if-a-user-is-in-a-certain-group – mikep
is_staff is inbuilt attr對於django管理員模式用戶,is_china不是。 要能夠使用is_china,您需要一個定製用戶模型,您可以在其中定義is_china attr。 – Amar