因此,我正在用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
非常感謝你,我能弄明白,我會給帖子添加一個答案。 –