私は最初のプロジェクトをDRFで作成していますが、私は自分のビューセットのアクセス許可を設定する際にいくつか問題があります。私はすでにdjangorestframework-jwtで動作する認証を持っています。現在、いくつかの異なるビューセットが定義されています。私がしたいことは、モデルオブジェクトの所有者がそのオブジェクトに望みどおりの変更を加えることができるようにすることですが、ほかの人(管理者以外)がオブジェクトを見ることさえ禁止します。基本的には、特定のメソッドに権限クラスを適用して、管理者だけが「リスト」、「所有者を更新、破棄する」、認証されたユーザーを「作成」することを許可する必要があります。django rest framework viewsetに基づくアクセス許可
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
を適用する権限クラスで
class LinkViewSet(viewsets.ModelViewSet):
queryset = Link.objects.all()
serializer_class = LinkSerializer
:現在、私はこのようなものを持っています完全なカスタム表示を書いていますが、これは特にこれを行う簡単な方法があるという気持ちを持っています。なぜなら、これは基本的にAPIを完成させるために最後にやることだからです。何か助けてくれてありがとう、さらに詳しい情報が必要な場合はお知らせください。
[DjangoModelPermissions](https://github.com/encode/django-rest-framework/blob/master/rest_framework/permissions.py#L75)のように、 'has_object_permission()'の 'request.method'をチェックすることができます。そうです。 – kichik
ありがとう、私はそれを把握することができた、私はポストへの答えを追加します。 –