如果用户已经存在,是否可以返回或创建令牌? 我需要这样的东西
class LoginEasy(CreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
def post(self, request):
pw = '!Rd5tkis-02kjWk'
serialized = UserSerializer(data=request.data)
if serialized.is_valid():
u = User.objects.filter(email=serialized.data['email'])
if len(u) > 0:
userdata= {'id': u[0].id, 'password': pw, 'first_name': u[0].first_name, 'last_name': u[0].last_name, 'email': u[0].email},
token, created = Token.objects.get_or_create(user=userdata)
return Response({'token': token.key,
'id': userdata.id,
'first_name': userdata.first_name,
'last_name': userdata.last_name,
'email': userdata.email})
我收到此错误。
int()参数必须是字符串,类似字节的对象或数字,而不是' dict'
答案 0 :(得分:0)
您的模型Token
需要正确答案,但我认为您需要
Token.objects.get_or_create(**userdata)
# ^^^^^^^^^^^
你可以更简单地做出回应:
userdata.update({'token': token.key})
return Response(userdata)
答案 1 :(得分:0)
我发现错误,如果这可以帮助这里的人是固定代码。
def post(self, request):
serialized = UserSerializer(data=request.data)
if serialized.is_valid():
u = User.objects.filter(email=serialized.data['email'])
user = User.objects.get(username=serialized.data['email'])
if len(u) > 0:
token, created = Token.objects.get_or_create(user=user)
return Response({'token': token.key}, status=status.HTTP_200_OK)