Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 通过DRF中的位运算符组合的每个权限的唯一消息_Django_Django Rest Framework - Fatal编程技术网

Django 通过DRF中的位运算符组合的每个权限的唯一消息

Django 通过DRF中的位运算符组合的每个权限的唯一消息,django,django-rest-framework,Django,Django Rest Framework,问题是在DRF中使用多个权限的情况下获取唯一消息 例如,我有以下两个权限类: class PermOne(permissions.IsAuthenticated): message = ‘message one’ def has_object_permission(self, request, view, obj): return obj.entry_author == request.user class PermTwo(permissions.I

问题是在DRF中使用多个权限的情况下获取唯一消息

例如,我有以下两个权限类:

class PermOne(permissions.IsAuthenticated):
   
    message = ‘message one’

    def has_object_permission(self, request, view, obj):
        return obj.entry_author == request.user


class PermTwo(permissions.IsAuthenticated):
   
    message = ‘message two’

    def has_object_permission(self, request, view, obj):
        return request.user.is_active


class MyView( generics.CreateAPIView):
    permission_classes = (PermOne |PermTwo)
…
…
…
问题是,如果我将两个或多个缓解与操作符(如
|&
)组合在一起,在失败的情况下,而不是在每个权限类中定义唯一的消息,我会收到标准消息

 {
    "detail": "You do not have permission to perform this action."
}
,而在仅从权限类成功获取单个权限类消息的情况下

当然,我可以在一个类中组合2个权限,并在这个类中定义消息选择逻辑,但是2个perm可以,5个怎么样?好像是逆流而上

无论如何,如果通过
|
&
组合它们,是否可以为每个权限类提供唯一的消息


谢谢大家!

没有办法做到这一点(至少到目前为止)。当DRF检查权限时,它将其视为单个类,并且该虚拟权限类中没有任何
消息
属性。@Arakkal Abu。谢谢你的回答。你知道我在哪里可以找到“虚拟权限类”的代码吗?源代码:没有方法可以做到这一点(至少到目前为止)。当DRF检查权限时,它将其视为单个类,并且该虚拟权限类中没有任何
消息
属性。@Arakkal Abu。谢谢你的回答。你知道我在哪里可以找到“虚拟权限类”的代码吗?源代码: