因此,我正在用DRF编写我的第一个项目,并且在设置我的视图集的权限时遇到了一些问题。我已经使用djangorestframework-jwt进行了身份验证。目前,我定义了几个不同的ViewSet。我想要做的是允许模型对象的所有者对其想要的对象进行任何更改,但是阻止其他人(旁边的管理员)查看对象。基本上,我需要一种将权限类应用于特定方法的方法,以便只允许管理员查看“列表”,所有者“更新,销毁等”,并通过身份验证的用户进行“创建”。目前,我有这样的事情:基于方法的django rest框架视图集权限
class LinkViewSet(viewsets.ModelViewSet):
queryset = Link.objects.all()
serializer_class = LinkSerializer
与
class Link(models.Model):
name = models.CharField(max_length=200)
url = models.URLField()
# another model with a OneToMany relationship
section = models.ForeignKey('homepage.LinkSection', related_name='links', on_delete=models.CASCADE
owner = models.ForeignKey('homepage.UserProfile'), related_name='links', on_delete=models.CASCADE)
模型和权限类我想申请
class IsOwner(permissions.BasePermission):
def has_object_permissions(self, request, view, obj):
return obj.owner == request.user.userprofile
我敢肯定,这可以通过实现这一目标编写完全自定义的视图,但我有一种直觉,有一种更简单的方法来做到这一点,因为这基本上是我必须做的最后一件事情来完成API。感谢您的帮助,如果您需要更多信息,请告诉我。
你可以像'[DjangoModelPermissions](https://github.com/encode/django-rest-framework/blob/master/rest_framework/permissions.py#L75)一样在'has_object_permission()'中检查'request.method'。确实。 – kichik
非常感谢你,我能弄明白,我会给帖子添加一个答案。 –