gpt4 book ai didi

python - 自定义 API 不调用 has_object_permission

转载 作者:太空宇宙 更新时间:2023-11-04 05:16:53 25 4
gpt4 key购买 nike

我有一个用于 API POST /api/samples/sample_id/check 的 View 集 SampleViewSet。我已经为它定义了对象级权限。

class SamplePermission(BasePermission):
def has_object_permission(self, request, view, obj):
return True

class SampleViewSet(viewsets.ModelViewSet):
permission_classes = (SamplePermission, )

@detail_route(methods=['post'])
def check(self, request, pk=None):
if pk:
print "check"

当我调用 API POST /api/samples/check 时,函数 has_object_permission 没有被调用。可能是什么原因?

最佳答案

权限无效,因为方法 check_object_permissionsget_object 函数中调用。因此,您应该在 check 函数中调用其中一个函数:

    @detail_route(methods=['post'])
def check(self, request, pk=None):
obj = self.get_object()
....

或者你可以直接在detail_route中添加权限

    @detail_route(
permission_classes=[SamplePermission],
methods=['post'])
def check(self, request, pk=None):
...

关于python - 自定义 API 不调用 has_object_permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483865/

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