Django 通过DRF中的位运算符组合的每个权限的唯一消息
问题是在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
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。谢谢你的回答。你知道我在哪里可以找到“虚拟权限类”的代码吗?源代码: