簡體   English   中英

返回或創建令牌(如果用戶已經存在)? 詹戈

[英]Return or create a token if the user already exist? django

如果用戶已經存在,是否可以返回或創建令牌? 我需要這樣的東西

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'

您的模型Token需要正確答案,但我認為您需要

Token.objects.get_or_create(**userdata)
#                          ^^^^^^^^^^^

您可以使響應更加簡單:

userdata.update({'token': token.key})
return Response(userdata)

我發現了錯誤,如果這可以幫助這里的人是固定代碼。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM