Django rest-framework DjangoModelPermissions允许任何经过身份验证的用户的问题

Fab*_*iot 6 django django-rest-framework django-mongodb-engine

我试图使用DjangoModelPermissions,它似乎无法正常工作.

这是代码:

class TestViewSet(viewsets.ModelViewSet):
    model = Test
    serializer_class = serializers.TestSerializer
    permission_classes = (permissions.DjangoModelPermissions,)

    def create(self, request):
        response_data = {}
        response_data['type'] = 'error'
        data=json.loads(request.raw_post_data)

        test = Test.objects.create(name=data['name'],\
                                            description=data['description'],\
                                            start_date=data['start_date'],\
                                            end_date=data['end_date'])          

        #save changes
        test.save()
        return Response({'status': 'ok', "result": test.id})
Run Code Online (Sandbox Code Playgroud)

我不认为这种情况有什么不同,但我使用的是django_mongodb_engine.

我有一个没有权限的用户,它可以创建测试实例.另一方面,我如何阻止GET,以便具有正确权限的用户可以执行该操作?

谢谢

tim*_*mop -2

您需要具有 DRF 的 django-guardian 才能使 DjangoModelPermissions 正常工作。原始文档http://www.django-rest-framework.org/api-guide/permissions的 DjangoModelPermissions 段落下也提到了这一点

如果它仍然无法正常工作,请告诉我们

  • 文档表明 django-guardian 是在 DjangoObjectPermissions 部分中提到的,而不是 DjangoModelPermissions 部分。在@Fabiot 的问题中,他使用的是后者(就像我一样)。两者都需要监护人吗? (7认同)