qwe*_*rtp 5 python django rest django-views django-rest-framework
假设我有以下模型 -
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
Run Code Online (Sandbox Code Playgroud)
用于创建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)
Run Code Online (Sandbox Code Playgroud)
如何添加权限,以便只有经过身份验证的用户才能从 api 中的人员列表添加、更新、删除或检索对象。以及非授权用户的只读权限。我尝试浏览文档,但这一切都非常令人困惑。有人可以解释一下吗?
您需要添加IsAuthenticatedOrReadOnly权限类别才能PersonDetail查看。
来自 DRF文档:
这
IsAuthenticatedOrReadOnly将允许经过身份验证的用户执行任何请求。仅当请求方法是“安全”方法之一时,才允许未经授权的用户提出请求;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)
Run Code Online (Sandbox Code Playgroud)