Python Django-根据用户组在基本html中显示/隐藏URL?
我想尝试根据用户组在导航页面中显示或隐藏URL。 目前,我正在添加到每个视图的顶部,并通过一个值发送到模板并进行检查,但这似乎不是很有效,而且如果视图不需要身份验证且未设置该值,这会破坏模板吗 有更好的方法吗? 像一个global.py,在那里我可以检查和设置它,然后在任何模板中使用它?还是完全不同的东西 view.pyPython Django-根据用户组在基本html中显示/隐藏URL?,python,django,Python,Django,我想尝试根据用户组在导航页面中显示或隐藏URL。 目前,我正在添加到每个视图的顶部,并通过一个值发送到模板并进行检查,但这似乎不是很有效,而且如果视图不需要身份验证且未设置该值,这会破坏模板吗 有更好的方法吗? 像一个global.py,在那里我可以检查和设置它,然后在任何模板中使用它?还是完全不同的东西 view.py Authorised_user = '' if request.user.is_authenticated(): Authorised_user = 'IT' @lo
Authorised_user = ''
if request.user.is_authenticated():
Authorised_user = 'IT'
@login_required
def index(request):
return render(request, 'service/index.html', {
'Authorised': Authorised_user,
})
template.html
{% if Authorised == 'IT' or Authorised =='Netwworks' %}
<a href="link">Link</a>
{% endif %}
您需要创建context_processors.py并创建一个函数,比如
def foo():
Authorised_user = ''
if request.user.is_authenticated():
Authorised_user = 'IT'
然后开始
模板\u上下文\u处理器=路径\u到\u上下文\u处理器.foo
通过这种方式,您可以在所有模板中使用foo变量,而无需在所有视图中显式定义。
您也可以在此处查看:
我在django admin中有用户组
基于
在适当的位置创建user_tags.py/group_tags.py。e、 g.auth_extra/templatetags/user_tags.py
然后在模板中:
{% 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 %}
对我来说,最简单的方法是。 在这里,您不必创建自定义模板标记
{% if request.user.groups.all.0.name == "groupname" %}
...
{% endif %}
这有点不清楚。您如何确定用户是IT还是网络?为什么你不能在模板中这样做呢?没有global.py,但是你可以编写一个自定义的上下文管理器来完成这项工作。你在寻找模板上下文处理器吗?如果可以通过Django的组来处理这个问题:请看@DanielRoseman我觉得我的代码中有点混乱,我在Django admin中有用户组,我想在模板中使用它们作为参考
{% if request.user.groups.all.0.name == "groupname" %}
...
{% endif %}