django-rest-framework:设置每个用户的权限

时间:2015-03-16 08:52:17

标签: django-rest-framework

我使用DRF 3.0.1创建了REST api。如果我使用权限类 rest_framework.permissions.IsAuthenticated ,任何经过身份验证的用户都可以为任何用户执行GET,POST等操作,只要他有一个有效的令牌。

我想设置每个用户的权限,因为管理员用户可以查看和更新​​所有用户的数据,但任何非管理员用户应该只能查看和更新​​他的数据。

从我到目前为止看到的示例来看,似乎 rest_framework.permissions.DjangoObjectPermissions 是我需要使用的类。但是,这些示例使用基于类的视图。

我在代码中使用了基于函数的视图。是否可以使用基于功能的视图实现此功能?按DRF doc中的建议执行queryset = <Model>.objects.non()无效。它抱怨Cannot apply DjangoModelPermissions on a view that does not have .model or .queryset property.

我有没有办法在不从FBV转到CBV的情况下做到这一点?

1 个答案:

答案 0 :(得分:2)

您使用DRF的api_view装饰器吗?

如果是这样,您可能会发现rest_framework.decorators.permission_classes有用。

@permission_classes([SomePermission])