Django rest_framework IsAdminUser not behaving



我在rest框架中有一个viewset,它的行为不像我期望的那样。如果我使用非员工用户登录并导航到api-url/users,我可以看到那里列出的所有用户。

IsAuthenticated权限正在工作,因为如果我注销,我得到一个错误,说我没有经过身份验证。

我使用这些权限不对吗?我已经完成了教程并浏览了文档,但我找不到任何东西告诉我为什么这不应该工作

视图:

class UserViewSet(viewsets.ModelViewSet):
    """Viewset for viewing users. Only to be used by admins"""
    queryset = LangaLangUserProfile.objects.all()
    serializer_class = UserSerializer
    filter_backends = (filters.DjangoFilterBackend, )
    filter_fields = '__all__'
    permissions_classes = (permissions.IsAdminUser, )
class LanguageViewSet(viewsets.ReadOnlyModelViewSet):
    """Viewset for Language objects, use the proper HTTP methods to modify them"""
    queryset = Language.objects.all()
    serializer_class = LanguageSerializer
    filter_backends = (filters.DjangoFilterBackend, )
    filter_fields = '__all__'
    permissions_classes = (permissions.IsAuthenticated, )

网址:

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'language', views.LanguageViewSet)

序列化器:

class UserSerializer(serializers.ModelSerializer):
    """Serializer for User objects"""
    class Meta:
        model = LangaLangUserProfile
        fields = '__all__'
class LanguageSerializer(serializers.ModelSerializer):
    """Serializer for the Language model"""
    class Meta:
        model = Language
        fields = '__all__'
        depth = 2

打字错误!

permission_classes,不是permissions_classes


关于本部分:

IsAuthenticated权限正在工作,因为如果我注销,我会得到一个错误,说我没有经过身份验证。

我不知道为什么会发生这种情况,但我责怪DEFAULT_PERMISSION_CLASSES在你的Django设置-也许你有IsAuthenticated指定在那里?

最新更新