【问题标题】:Django Rest Framework DjangoModelPermissions not working properlyDjango Rest Framework DjangoModelPermissions 无法正常工作
【发布时间】:2021-04-12 03:32:06
【问题描述】:

为什么 DRF 权限类 DjangoModelPermissions 允许每个用户执行所有请求,例如 POSTPUTDELETE 甚至那些我没有手动为他们分配添加更改的用户删除我的 django 管理员的权限。他们只能查看对象,但为什么会收到所有不安全的请求 POSTDELETE...?

Views.py

class HotelViewSet(viewsets.ModelViewSet):
    queryset = Hotel.objects.all()
    serializer_class = HotelSerializer
    authentication_classes = [SessionAuthentication]
    permission_classes = [DjangoModelPermissions]

settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissions',
        ]
}

【问题讨论】:

  • 你找到答案了吗?

标签: python-3.x django django-models django-rest-framework django-views


【解决方案1】:

viewsets.ModelViewSet 本身没有实现delete()post() 等方法。如果你想使用它,你必须自己实现它们。

相反,您应该使用 Django REST generics。请参考 Django REST 框架文档: https://www.django-rest-framework.org/api-guide/generic-views/

【讨论】:

    【解决方案2】:

    我建议使用 DRF 通用视图,您可以在其中使用特定视图,例如 ListAPIView/RetrieveAPIView 用于 GET 请求,CreateAPIView 用于 POST,UpdateAPIView 用于 PUT 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-07
      • 2013-10-21
      • 2014-03-07
      • 2013-02-25
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多