我有一个基本的 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/