如何解决Django Rest Framework:如何使用OperationHolderMixin?
在Django Rest Framework site-packages/rest_framework/permissions.py
的源代码中,我可以看到OperationHolderMixin
类以及子类AND
,OR
和NOT
。
文档中没有任何内容,我也没有找到用例的样本。有没有人曾经使用过那些“合成”类,我什么时候应该使用它们?
解决方法
您不必直接在代码库中使用这些类,只需使用具有 逻辑表达式
的类假设您具有三个权限类,
class PermissionOne(permissions.BasePermission):
def has_permission(self,request,view):
# your logic
pass
class PermissionTwo(permissions.BasePermission):
def has_permission(self,view):
# your logic
pass
class PermissionThree(permissions.BasePermission):
def has_permission(self,view):
# your logic
pass
然后,您可以在视图中使用以下类,
class MyAPIView(APIView):
permission_classes = [PermissionOne | PermissionTwo | PermissionThree]
表达式 PermissionOne | PermissionTwo | PermissionThree
相对于 在幕后创建了 虚拟DRF权限类 逻辑表达式 。
这意味着,您可以将代码重写为
MyCompositePermissionClass = PermissionOne | PermissionTwo | PermissionThree
class MyAPIView(APIView):
permission_classes = [MyCompositePermissionClass]
注意:DRF支持&
(和),|
(或)和~
(不是)按位运算符来创建复合权限类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。