Permissions 如何在ModelViewSet';s

Permissions 如何在ModelViewSet';s,permissions,django-rest-framework,Permissions,Django Rest Framework,使用ModelViewSet时,如何为POST请求编写自己的权限类 我已经试着写我自己的许可证,但没有成功。即使我的权限类返回false,它仍然授予对post请求的访问权限 models.py 权限.py url.py 如果我试图上传一张图片,为什么? 我的IsOwner权限类被评估,因为我可以在控制台中看到带有“TEST”的打印行 我的解决方案: 通过类列表,您使用了has\u object\u permission(),您需要在has\u permission()方法中编写代码 permis

使用ModelViewSet时,如何为POST请求编写自己的权限类

我已经试着写我自己的许可证,但没有成功。即使我的权限类返回false,它仍然授予对post请求的访问权限

models.py 权限.py url.py 如果我试图上传一张图片,为什么? 我的IsOwner权限类被评估,因为我可以在控制台中看到带有“TEST”的打印行

我的解决方案:
通过类列表,您使用了
has\u object\u permission()
,您需要在
has\u permission()方法中编写代码

permission_classes = [<class 'rest_framework.permissions.AllowAny'>]

非常感谢。你是对的!但我现在有另一个问题。(我编辑了我的问题)如何检查ForeignKey是否为用户所有?在has_object_permission中,我做了如下操作:return obj.building.user==request.user,但在has_permission中没有obj?建筑模型是否有用户的外键?请不要把两个问题混在一起。询问另一个关于外键问题的问题。是。我将我的解决方案添加到主题中,因为我解决了它。你能在这里发布你的建筑模型吗?是的,我将它添加到第一篇文章中
class BuildingImageViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    serializer_class = BuildingImageSerializer
    permission_classes = (permissions.IsAuthenticated, IsOwner,)

    def get_queryset(self):
        if self.request.user.is_authenticated:
            return     BuildingImage.objects.filter(building__user=self.request.user)
        return None
class IsOwner(permissions.BasePermission):

    def has_object_permission(self, request, view, obj):
        print("TEST")
        return False
router = routers.DefaultRouter()
router.register(r'buildingimages', myrest_views.BuildingImageViewSet, base_name="buildingimage")
def has_permission(self, request, view):

    if view.action == 'create':
        building_url    = request.POST.get('building')
        building_path   = urlparse(building_url).path
        building_id     = resolve(building_path).kwargs['pk']
        building        = Building.objects.get(id=building_id)
        return building.user == request.user

    return True
permission_classes = [<class 'rest_framework.permissions.AllowAny'>]
from rest_framework import permissions

class IsOwner(permissions.BasePermission):

     def has_permission(self, request, view):
         if <CONDITION>:
             return True
         else:
             return False