假设我有以下型号 -
class Person(models.Model):
name = models.CharField(max_length=200)
clubs = models.ManyToManyField(Club,related_name = 'people')
date = models.DateTimeField(default=datetime.now)
def __str__(self):
return self.name
用于创建rest api。
views.py
class PersonDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = PersonSerializer
def get_object(self):
person_id = self.kwargs.get('pk',None)
return Person.objects.get(pk=person_id)
如何添加权限,以便只有经过身份验证的用户才能在api中的人员列表中添加,更新删除或检索对象。和非授权用户的只读权限。我试过浏览文档,但这一切都让人很困惑。有人可以解释一下吗?
答案 0 :(得分:1)
您需要将IsAuthenticatedOrReadOnly
权限类添加到PersonDetail
视图。
来自DRF Docs:
IsAuthenticatedOrReadOnly
将允许经过身份验证的用户执行任何请求。只有在请求时才允许对未授权用户的请求 方法是" safe"方法;GET
,HEAD
或OPTIONS
。
from rest_framework.permissions import IsAuthenticatedOrReadOnly
class PersonDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = PersonSerializer
permission_classes = (IsAuthenticatedOrReadOnly,) # specify the permission class in your view
def get_object(self):
person_id = self.kwargs.get('pk',None)
return Person.objects.get(pk=person_id)