django - DRF Viewset 删除详细路线的权限

标签 django django-rest-framework django-permissions

我有一个基本的 View 集:

class UsersViewSet(viewsets.ModelViewSet):
    permission_classes = (OnlyStaff,)
    queryset = User.objects.all()
    serializer_class = UserSerializer

它绑定(bind)到 /api/users/端点。我想创建一个用户个人资料页面,所以我只需要一个特定的用户,所以我可以从 /api/users/<id>/ 检索它,但问题是我想要 /api/users/<id>/允许任何人,但 /api/users/保留其许可OnlyStaff ,因此没有人可以访问完整的用户列表。

注意:也许这不是一个很好的实现,因为任何人都可以强制增加 id 的数据。 , 但我愿意从 <id> 更改它至<slug> .

如何从详细路由中删除权限?

提前致谢。

最佳答案

覆盖 get_permissions() 方法如下

from rest_framework.permissions import AllowAny


class UsersViewSet(viewsets.ModelViewSet):
    permission_classes = (OnlyStaff,)
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def get_permissions(self):
        if self.action == 'retrieve':
            return [AllowAny(), ]        
        return super(UsersViewSet, self).get_permissions()

关于django - DRF Viewset 删除详细路线的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543849/

相关文章:

django - 停止 Django 将时间转换为 UTC

python - Django View 重定向NoReverseMatch错误

python - 重新渲染 django-tables2 列标题

python - Django: request.META ['REMOTE_ADDR' ] 总是 '127.0.0.1'

django - DRF Serializer - 如何返回外键的字段?

python - Django Restful 模型外键 - 指定 From 和 To 字段

python - OAuth2 TokenScope 与 Django Permissions 类似吗?

python - 在 GET 中隐藏密码字段,但在 Django REST Framework 中不隐藏密码字段,其中序列化程序中的深度 = 1

python - 同时使用组和个人权限

python - 如何获得从用户组继承的权限?