python - Django - 根据用户组显示/隐藏基本 html 中的 url?

标签 python django

我想尝试根据用户组在我的导航页面中显示或隐藏 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/

相关文章:

python - Django:将 key 放入 crontab 文件

Python:如何在没有排序函数的情况下对列表中的字母表进行排序?

python - 使用 Python 和 mySQL(和 windows 作为操作系统),cursor.execute() 没有返回任何结果,但它正在连接

Django admin自定义字段按条件获取最新相关对象的结果

django - 编写自定义 Django 表单字段和小部件

python - Django 合并 2 个具有相同值的字典/查询集

python -\n 在 python 中的工作

python - 如何通过列值唯一标识 csv 中的行,然后检查另一列是否有 "Passed"关键字并打印它

python - pymc3中的贝叶斯因子

javascript - Django 客户端验证小数字段限制