是否有为给定APIViewViewSet的每个操作分配不同权限的最佳实践?

假设我定义了一些权限类,比如"IsAdmin"、"IsRole1"、"IsRole2"...,我想为单个操作授予不同的权限(例如,拥有Role1的用户可以创建或检索,拥有Role2的用户可以更新,只有管理员可以删除).

如何构建基于类的视图,以便将权限类分配给"创建"、"列表"、"检索"、"更新"和"删除"操作? 我正在try 这样做,以便拥有一个可以在具有相同权限模式的不同表中重用的类.

推荐答案

您可以创建custom permission class个扩展DRF的BasePermission.

您可以实现has_permission,其中您可以访问requestview对象.您可以判断request.user中是否有合适的角色,并根据需要返回True/False.

看看提供的IsAuthenticatedOrReadOnly个类(和其他类),可以很好地说明它是多么简单.

我希望这能有所帮助.

Django相关问答推荐

其中实际的数据库提取在DRF list()中完成

Django AWS S3对象存储boto3媒体上传报错

Pytest-django - 测试创建和传递所需的用户对象

Django 如何知道我的数据库的路径?

Django中的多对多关系?

django 创建多种类型用户的最佳方法

Django 独立脚本

ModelForm 的 Django TextField max_length 验证

如何在不使用 sudo 的情况下安装 virtualenv?

根据模型属性获取django对象id

Django 模型将外键设置为另一个模型的字段

Django,如何从模型表单的 Select 字段中删除空白 Select ?

更新Django模型对象多个字段的有效方法

Django 模板和变量属性

UnicodeEncodeError:ascii编解码器无法编码字符

settings.DATABASES 配置不正确使用 django 1.4 执行 syncdb 时出错

django过滤器超过几天?

如何使 Django 表单字段仅包含字母数字字符

使用 request.user 的 Django 和中间件始终是匿名的

为整个结果集向 Django Rest Framework 结果添加额外数据