启用rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly时无法应用DjangoModelPermissions

Le *_*ang 4 django mongoengine django-rest-framework

我正在尝试使MongoEngine与Django REST框架一起使用。通过单击此链接使mongoengine和django rest框架正常运行,我设法使所有工作正常进行,但必须在REST框架中禁用“ PERMISSION CLASSES”,如下所示

'DEFAULT_PERMISSION_CLASSES': [ #'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ]

否则,我得到这个错误“无法对不具备视图下应用DjangoModelPermissions .model.queryset财产。” 原因似乎是从“ Collection.objects”或“ Collection.objects.all()”返回的值无法通过REST框架中的Permission.py中的“ has_permission”函数传递。

有人可以帮忙看看吗?

小智 5

在您的views.py中导入以下模型:

from rest_framework.permissions import AllowAny
from rest_framework.decorators import api_view, permission_classes
Run Code Online (Sandbox Code Playgroud)

在声明函数(视图函数)之前添加:

@api_view(['GET', 'POST'])
@permission_classes((AllowAny, ))
Run Code Online (Sandbox Code Playgroud)

或者

@api_view(['GET', 'PUT', 'DELETE'])
@permission_classes((AllowAny, ))
Run Code Online (Sandbox Code Playgroud)


小智 5

或者,您可以添加:

from rest_framework import permissions
Run Code Online (Sandbox Code Playgroud)

并在视图类中添加

permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
Run Code Online (Sandbox Code Playgroud)