2
APIのビューセットSampleViewSetがPOST
/api/samples/sample_id/check
です。私はオブジェクトレベルの権限を定義しています。カスタム定義のAPIに対してhas_object_permissionが呼び出されていません
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
関数内でその関数のいずれかを呼び出す必要があります。この関数はGET apiのために呼び出されます。カスタム定義のAPIでは機能しません。 – linuxfreak@linuxfreak回答 –
detail_routeに直接アクセス許可を追加しました。私は、サンプル許可内にhas_permissionとhas_object_permissionの両方を定義しています。 'has_object_permission'は呼び出されませんが、 'has_permission'は呼び出されます。 – linuxfreak