【问题标题】:Cannot apply DjangoModelPermissions when rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly is enabled启用 rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly 时无法应用 DjangoModelPermissions
【发布时间】:2014-09-09 15:25:30
【问题描述】:

我正在尝试使 MongoEngine 与 Django REST 框架一起工作。通过点击此链接Getting mongoengine and django rest framework to play nice,我设法让一切正常,但必须在 REST 框架中禁用“PERMISSION CLASSES”,如下所示

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

否则,我会收到此错误“无法在没有 .model.queryset 属性的视图上应用 DjangoModelPermissions。”。原因似乎是“Collection.objects”或“Collection.objects.all()”的返回值无法在REST框架的permission.py中传递“has_permission”函数。

谁能帮忙看看这个?

【问题讨论】:

标签: django django-rest-framework mongoengine


【解决方案1】:

或者你可以添加:

from rest_framework import permissions

并在视图类中添加

permission_classes = (permissions.IsAuthenticatedOrReadOnly,)

【讨论】:

    【解决方案2】:

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

    from rest_framework.permissions import AllowAny
    from rest_framework.decorators import api_view, permission_classes
    

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

    @api_view(['GET', 'POST'])
    @permission_classes((AllowAny, ))
    

    @api_view(['GET', 'PUT', 'DELETE'])
    @permission_classes((AllowAny, ))
    

    【讨论】:

    • 这不适用于基于类的视图。请更新答案以更具体。
    • 我不会说这将是最好的答案。由于`DjangoModelPermissions`基本上是根据角色/组来管理权限的。
    猜你喜欢
    • 2017-01-12
    • 2014-05-21
    • 2021-04-12
    • 2015-09-28
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多