【发布时间】:2019-09-04 04:58:40
【问题描述】:
创建令牌时出现上述错误,代码如下:
from rest_framework import generics, permissions
from rest_framework.response import Response
from knox.models import AuthToken
from .serializers import UserSerializer, RegisterSerializer
class RegisterAPI(generics.GenericAPIView):
serializer_class = RegisterSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.save()
return Response({
"user": UserSerializer(user, context=self.get_serializer_context()).data,
"token": AuthToken.objects.create(user)
})
我在这里做错了什么
【问题讨论】:
-
好吧,您还需要序列化
AuthToken,就像您对用户所做的那样(或传递可以转换为 JSON 的令牌属性(如str、@987654324 @ 等)。AuthToken本身至少在没有一些额外逻辑的情况下是可序列化的)。 -
如何序列化AuthToken?
-
使用序列化程序,就像使用
UserSerializer一样。 -
好的,知道了,它是一个不能序列化的元组,这样做是有效的 AuthToken.objects.create(user)[1]。
-
这似乎是
django-rest-knox的变化。我有一个django-rest-know v 3.6.0使用您在帖子中的代码的项目。我刚刚开始一个新项目(使用版本 4.0.1),我不得不将[1]添加到令牌序列化中。
标签: django python-3.x django-rest-framework django-authentication