我想尝试根据用户组在我的导航页面中显示或隐藏 url。 目前我正在添加到每个 View 的顶部并通过一个值发送到模板并检查它,但这似乎不太有效,而且如果 View 不需要身份验证并且未设置该值,是否会破坏模板?
有更好的方法吗? 像 global.py,我可以在其中检查和设置然后在任何模板中使用它?还是完全不同的东西?
View .py
Authorised_user = ''
if request.user.is_authenticated():
Authorised_user = 'IT'
@login_required
def index(request):
return render(request, 'service/index.html', {
'Authorised': Authorised_user,
})
模板.html
{% if Authorised == 'IT' or Authorised =='Netwworks' %}
<a href="link">Link</a>
{% endif %}
最佳答案
i do have the user groups in django admin
基于 Get user group in a template
在适当的地方创建 user_tags.py/group_tags.py。例如auth_extra/templatetags/user_tags.py
from django import template
register = template.Library()
@register.filter('in_group')
def in_group(user, group_name):
return user.groups.filter(name=group_name).exists()
然后在你的模板中:
{% load user_tags %}
{% if request.user|in_group:"IT"%}
<a href="link">IT only link</a>
{% endif %}
{% if request.user|in_group:"Netwworks"%}
<a href="link"> Netwworks only link</a>
{% endif %}
关于python - Django - 根据用户组显示/隐藏基本 html 中的 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390880/