【发布时间】:2021-10-05 17:13:48
【问题描述】:
我正在尝试使用 put 方法并使用带有 RetrieveUpdateAPIView 的 get_object 的令牌返回用户模型实例的更改。但我只得到用户数据:
{
"id": int,
"username": "",
"email": "",
"is_staff": bool
}
有没有办法得到这样的?:
{
"user": {
"id": int,
"username": "",
"email": "",
"is_staff": bool
},
"token": ""
}
这是为了不改变前端的逻辑;获取授权令牌:user.token
这是我的序列化器:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'is_staff')
这是我的观点:
class UserAPI(generics.RetrieveUpdateAPIView):
permission_classes = [permissions.IsAuthenticated]
serializer_class = UserSerializer
def get_object(self):
return self.request.user
【问题讨论】:
-
请分享您要求的代码部分。但是,您可以在这种情况下使用嵌套调用
-
我添加了代码,谢谢。
-
这个 "token": "" 来自哪里或者它的用途是什么?
-
来自 LoginView:
serializer_class = LoginUserSerializer def post(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data return Response({ "user": UserSerializer(user, context=self.get_serializer_context()).data, "token": AuthToken.objects.create(user)[1] })
标签: django api django-rest-framework django-views backend