Python Django Rest框架:自定义IsReadOnly权限

Python Django Rest框架:自定义IsReadOnly权限,python,django,django-rest-framework,permissions,Python,Django,Django Rest Framework,Permissions,我创建了一个自定义权限,该权限为每个人授权GET、HEAD和OPTION,并授权NO其他请求 但是我的代码不起作用。尽管我允许,我还是可以提出发帖请求 有人有办法解决我的问题吗 我的视图.py: class IsReadOnly(permissions.BasePermission): def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_MET

我创建了一个自定义权限,该权限为每个人授权GET、HEAD和OPTION,并授权NO其他请求

但是我的代码不起作用。尽管我允许,我还是可以提出发帖请求

有人有办法解决我的问题吗

我的
视图.py

class IsReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return False

class ViewPollViewSet(viewsets.ModelViewSet):
    permission_classes = [
        IsReadOnly,
    ]
    serializer_class = ViewPollSerializer
    queryset = ViewPoll.objects.all()
class ViewPollSerializer(serializers.ModelSerializer):
    class Meta:
        model = ViewPoll
        fields = '__all__'
class ViewPoll(models.Model):
    ''' view poll '''
    class Meta:
        unique_together = ('poll', 'user')

    poll = models.ForeignKey(Poll, on_delete=models.CASCADE, related_name="views", null=True)
    user = models.ForeignKey(User,on_delete=models.CASCADE, related_name="views_poll", null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.poll.question)[:30]
My
serializers.py

class IsReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return False

class ViewPollViewSet(viewsets.ModelViewSet):
    permission_classes = [
        IsReadOnly,
    ]
    serializer_class = ViewPollSerializer
    queryset = ViewPoll.objects.all()
class ViewPollSerializer(serializers.ModelSerializer):
    class Meta:
        model = ViewPoll
        fields = '__all__'
class ViewPoll(models.Model):
    ''' view poll '''
    class Meta:
        unique_together = ('poll', 'user')

    poll = models.ForeignKey(Poll, on_delete=models.CASCADE, related_name="views", null=True)
    user = models.ForeignKey(User,on_delete=models.CASCADE, related_name="views_poll", null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.poll.question)[:30]
My
models.py

class IsReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return False

class ViewPollViewSet(viewsets.ModelViewSet):
    permission_classes = [
        IsReadOnly,
    ]
    serializer_class = ViewPollSerializer
    queryset = ViewPoll.objects.all()
class ViewPollSerializer(serializers.ModelSerializer):
    class Meta:
        model = ViewPoll
        fields = '__all__'
class ViewPoll(models.Model):
    ''' view poll '''
    class Meta:
        unique_together = ('poll', 'user')

    poll = models.ForeignKey(Poll, on_delete=models.CASCADE, related_name="views", null=True)
    user = models.ForeignKey(User,on_delete=models.CASCADE, related_name="views_poll", null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.poll.question)[:30]

调用
具有权限(…)
方法,而不是
具有对象权限(…)
方法

class IsReadOnly(permissions.BasePermission):
    def has_permission(self, request, view):
        if request.method in permissions.SAFE_METHODS:
            return True
        return False
class IsReadOnly(permissions.BasePermission):
def具有_权限(自我、请求、查看):
如果permissions.SAFE_方法中的request.method:
返回真值
返回False