'dict' object has no attribute 'is_authenticated'

来源:9-3 vue和用户接口信息联调

提伯斯1

2020-11-15

老师 我这边按照你的动态设置认证
但是我前端调用/api/users/123/的时候 后端报’dict’ object has no attribute 'is_authenticated’
我贴一下后端代码

class UserViewSet(ModelViewSet):
    serializer_class = UserRegSerializer
    queryset = User.objects.all()
    # 控制是否登录
    # permission_classes = (permissions.IsAuthenticated,)
    authentication_classes = (JwtQueryParamsAuthentication, )

    # 动态设置序列化
    def get_serializer_class(self):
        if self.action == "retrieve":
            #
            return UserDetailSerializer
        elif self.action == "create":
            return UserRegSerializer

        return UserDetailSerializer

    # 动态设置认证
    def get_permissions(self):
        if self.action == "retrieve":
            return [permissions.IsAuthenticated()]
        elif self.action == "create":
            return []

        return []

    # 注册
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)

        re_dict = serializer.data
        payload = jwt_payload_handler(user)
        # 这里特意插入token 和 name返回给前端
        re_dict["token"] = jwt_encode_handler(payload)
        re_dict["name"] = user.name if user.name else user.username

        headers = self.get_success_headers(serializer.data)
        return Response(re_dict, status=status.HTTP_201_CREATED, headers=headers)

    # 返回当前用户的信息
    def get_object(self):
        return self.request.user

    # 创建
    def perform_create(self, serializer):
        return serializer.save()

写回答

1回答

提伯斯1

提问者

2020-11-16

问题我找到了。 因为我用了自己的jwt 机制 造成了django的get_object失败

0
1
bobby
好的,
2020-11-16
共1条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2889 学习 · 2467 问题

查看课程