或Djangoresfram的样式权限

2024-04-20 09:02:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有人找到了一个好方法来逆转DRF中权限的工作方式(使用或代替AND)。现在,如果任何一个检查失败,请求就没有经过身份验证。我想一种方法,使它这样,如果任何检查通过,请求认证。例如

# currently:
permission_classes=(HasNiceHat, HasNicePants)

对于戴着漂亮帽子和裤子的人,请求将失败。我想要的是:

# goal:
AND_permission_classes=(HasNiceHat, HasNicePants)

如果用户有漂亮的帽子或裤子,则会成功。你知道吗

我将假设所有用户都已登录(必须是其中一个才能通过检查),并且权限的实现不受任何限制。你知道吗


Tags: and方法用户身份验证权限方式帽子drf
1条回答
网友
1楼 · 发布于 2024-04-20 09:02:43

你能创建自己的权限类并使用它吗? 例如:

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,)

看起来rest_condition具有您需要的功能

相关问题 更多 >