【问题标题】:How to check group permissions in Django view?如何在 Django 视图中检查组权限?
【发布时间】:2022-07-02 18:06:25
【问题描述】:

我创建了两个组 group1group2 并相应地分配了用户。我发现我可以使用

拒绝访问模板
{% if perms.app1 %} // app1 is a app in project
///show something
{% endif %}

在上面的代码中,我只是检查用户是否有任何与应用程序相关的权限,如果为真则显示,如果为假则隐藏。我相信这就是它的工作原理。

现在,如何在视图上实现这一点?如何只给出应用名称并检查用户是否有权访问 view.py 中的视图功能?我认为添加权限列表不是一个好习惯,有没有办法只给应用程序名称来检查权限?

而且我已经有了一个角色检查装饰器:

def is_agent(login_url=None):
    actual_decorator = user_passes_test(lambda u: u.role == 1)
    
    if actual_decorator:
        return actual_decorator
    else:
        raise Http404

那么我可以向装饰器添加东西或如何处理它吗?

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    您需要将 group_required 定义为装饰器

    def group_required(*groups):

    def decorator(function):
        def wrapper(request, *args, **kwargs):
            if request.user.groups.filter(name__in=groups).exists():
                return function(request, *args, **kwargs)
            raise PermissionDenied
    
        return wrapper
    
    return decorator
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-11
      • 2013-05-04
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 2020-01-23
      • 2019-06-12
      • 2017-06-23
      相关资源
      最近更新 更多