为什么我的 request.user 在 Django 中没有组?

kra*_*r65 5 python django permissions authorization django-rest-framework

我有一个使用 Django Rest Framework 构建的端点,我现在想为其添加权限,以便只有属于某个组的用户才能访问端点。因此,我正在使用基于令牌的访问,并受此示例的启发,我尝试使用以下代码:

class ReadPermission(BasePermission):
    def has_permission(self, request, view):
        return request.user.groups.filter(name=settings.GROUP_POST_DATA).exists()

class MyEndpoint(mixins.ListModelMixin, viewsets.GenericViewSet):
    permission_classes = [IsAuthenticated, ReadPermission]
    http_method_names = ['get']
    # etc
Run Code Online (Sandbox Code Playgroud)

但不幸的是我得到了一个AttributeError: 'User' object has no attribute 'groups'

为什么用户对象没有组?

小智 5

似乎您没有使用或继承默认的 DjangoUser模型(或AbstractUser) from django.contrib.auth.models,它们与Groups.

如果您正在使用一些自定义User模型,您可以简单地将PermissionsMixin上述模块中的添加到继承中(请参阅文档)。还要确保这django.contrib.auth在您的INSTALLED_APPS设置中。