gpt4 book ai didi

Django REST Framework - 同一 View 中每个方法的不同权限

转载 作者:行者123 更新时间:2023-12-04 01:56:10 25 4
gpt4 key购买 nike

所以我在这里看到了几个类似的问题,但不是我想要的。

我试图在同一个 View 中为每个方法拥有不同的权限。我目前拥有的:

class MyViewSet(viewsets.ViewSet):
# User must be authenticated
permission_classes = (IsAuthenticated,)

def list(self, request):
...

# User must be admin
def create(self, request):
...

def retrieve(self, request):
...

基本上我试图确保只有管理员可以调用 create方法。我已经研究过创建自定义权限,但这适用于整个 View 集,这不是我想要的。

最佳答案

我认为没有内置的解决方案。但是您可以通过覆盖 get_permissions 来实现此目的。方法。

class MyViewSet(viewsets.ViewSet):

permission_classes_by_action = {
"default": [IsAuthenticated],
"retrieve": [AllowAny],
}

def get_permissions(self):
try:
# return permission_classes depending on `action`
return [
permission()
for permission in self.permission_classes_by_action[self.action]
]
except KeyError:
# action is not set return default permission_classes
return [
permission()
for permission in self.permission_classes_by_action["default"]
]

关于Django REST Framework - 同一 View 中每个方法的不同权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com