Django自定义权限方法或装饰器

如何收到

我有很多意见,并且不只一种用户类型。我想要某些可以由特定用户类型查看的视图,而其他用户则看不到。

例如,只有公司才能看到此视图,为此,我这样做如下:

@login_required
def only_company_can_view(request):
    if not Company.objects.filter(owner_id=request.user.id).exists():
        return HttpResponse('Permission Denied. Only Company can see this')

    # > rest of the logic
    return render(request, 'template.html')

并且在此之上工作非常好,并且解决了我的问题,但是我不喜欢这样。因为我不想每次都为公司相关的观点写其余的观点。

因此,我正在寻找解决方案,以便可以使用装饰器或其他最佳做法

在这种情况下,有人可以帮助我吗?

威廉·范昂塞姆

您可以将逻辑包装在装饰器中:

from django.core.exceptions import PermissionDenied
from functools import wraps

def requires_company(view):
    @wraps(view)
    def _view(request, *args, **kwargs):
        if not Company.objects.filter(owner_id=request.user.id).exists():    
            raise PermissionDenied
        return view(request, *args, **kwargs)
    return _view

然后,将装饰器用于:

@login_required
@requires_company
def only_company_can_view(request):
    # … rest of the logic …
    return render(request, 'template.html')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

菊花链式Python / Django自定义装饰器

来自分类Dev

如何在Django中制作自定义装饰器?

来自分类Dev

菊花链式Python / Django自定义装饰器

来自分类Dev

Django自定义权限

来自分类Dev

TypeScript中的自定义装饰器

来自分类Dev

Tornado 中的自定义装饰器

来自分类Dev

更改Flask和自定义装饰器的顺序会破坏自定义装饰器

来自分类Dev

如何在自定义Pinax安装上修改Django的login_required装饰器?

来自分类Dev

制作自定义django视图装饰器(带有args)时遇到问题

来自分类Dev

Django:自定义管理网站类的管理员注册装饰器

来自分类Dev

Django-自定义装饰器,仅允许ajax请求

来自分类Dev

Django Rest框架中基于类的视图的自定义装饰器

来自分类Dev

Django Rest-将@action与自定义装饰器一起使用

来自分类Dev

Django中自定义构建装饰器的安全性问题

来自分类Dev

Django中自定义构建装饰器的条件设置问题

来自分类Dev

具有cache_page错误的Django自定义装饰器

来自分类Dev

Django Rest Framework 内部函数未在自定义装饰器中调用

来自分类Dev

定义自定义装饰器,例如staticmethod

来自分类Dev

Django 创建自定义表单权限

来自分类Dev

应用函数并使用装饰器检查自定义异常

来自分类Dev

类视图集的自定义装饰器

来自分类Dev

Flask 自定义装饰器未按预期运行

来自分类Dev

QListView的自定义装饰

来自分类Dev

在服务器运行时通过django-admin添加自定义权限

来自分类Dev

Django REST Framework-不评估自定义权限

来自分类Dev

Django-基于函数的视图的自定义权限

来自分类Dev

文章作者的自定义Django Admin权限

来自分类Dev

Django-REST:自定义权限无效

来自分类Dev

Django:基于组的模型的自定义权限

Related 相关文章

热门标签

归档