如何根据 Django 中的用户组显示不同的内容?
How to show different content depending on UserGroup in Django?
我创建了一个 password_change_done
模板。
但我需要为员工显示一个 Back to Dashboard
按钮,为客户显示一个 Back to Profile
。
如何通过用户组检查实现这一点,而不干扰 views.py
?
然后你必须使用如下模板的filter
...
在您的应用中创建一个文件夹 'templatetags'。在此文件夹中创建两个文件:
- __init__.py
- get_group.py
文件夹结构看起来像...
app/
__init__.py
models.py
templatetags/
__init__.py
get_group.py
views.py
get_group.py 文件:
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
然后在您的 html 页面中使用它如下...
{% load get_group %}
{% if request.user|has_group:"Client" %}
... Back to Dashboard button ...
{% else %}
... Back to profile button ...
{% endif %}
我创建了一个 password_change_done
模板。
但我需要为员工显示一个 Back to Dashboard
按钮,为客户显示一个 Back to Profile
。
如何通过用户组检查实现这一点,而不干扰 views.py
?
然后你必须使用如下模板的filter
...
在您的应用中创建一个文件夹 'templatetags'。在此文件夹中创建两个文件:
- __init__.py
- get_group.py
文件夹结构看起来像...
app/
__init__.py
models.py
templatetags/
__init__.py
get_group.py
views.py
get_group.py 文件:
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
return user.groups.filter(name=group_name).exists()
然后在您的 html 页面中使用它如下...
{% load get_group %}
{% if request.user|has_group:"Client" %}
... Back to Dashboard button ...
{% else %}
... Back to profile button ...
{% endif %}