我想知道是否有人找到了一种很好的方法来逆转DRF中权限的工作方式(使用OR而不是和)。现在,如果任何检查失败,则请求没有经过身份验证。我想要一种方法,这样如果任何检查通过,请求就会被认证。即。
# currently:
permission_classes=(HasNiceHat, HasNicePants)如果你有一顶漂亮的帽子,和裤子,请求就会失败。我想要的:
# goal:
AND_permission_classes=(HasNiceHat, HasNicePants)如果用户有漂亮的帽子,或漂亮的裤子,就会成功。
我将假设所有用户都已登录(必须通过任何一种检查),并且权限的实现不受任何限制。
发布于 2016-02-09 03:38:01
您能创建自己的权限类并使用它吗?例如:
from rest_framework import permissions
class HasNiceHatOrHasNicePants(permissions.BasePermission):
"""
Permission to check if user has a Nice Hat or has Nice Pants.
If both are False do not return anything.
"""
def has_permission(self, request, view):
if request.user.has_nicehat() or request.user.has_nicepants():
return True然后,将这个新类导入视图,并按如下方式使用:
permission_classes = (HasNiceHatOrHasNicePants,)看起来条件具有您所需的功能
https://stackoverflow.com/questions/35281863
复制相似问题