【问题标题】:Why I am getting empty phone number and password empty?为什么我的电话号码和密码都是空的?
【发布时间】:2022-06-16 20:58:12
【问题描述】:

我正在为我的登录视图使用 django restframework。虽然我通过 POSTMAN 传递 json,但我得到的是空的电话和密码。

class LoginView(APIView):
    
    permission_classes = (permissions.AllowAny,)

    def post(self,request):
        phone = request.POST.get('phone')
        password = request.POST.get('password')
        
        if phone and password:
            get_user= CustomUser.objects.filter(phone=phone).first()
            username = get_user.username
            user = authenticate(request, username=username, password=password)
            if user is not None:
                login(request, user)
                return Response({"message": "Your are logged In!"}, status=status.HTTP_200_OK)
            else:
                return Response({"message": "Either phone number or password is wrong!"}, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"message": "Please type again!"}, status=status.HTTP_400_BAD_REQUEST)  

我使用 POSTMAN 传递的 json

{
    "phone": "923337195234",
    "password": "123456789"
}

这是结果

{
    "message": "Please type again!"
}

如果我注释掉第一个 if-else 语句

class LoginView(APIView):
    
    permission_classes = (permissions.AllowAny,)

    def post(self,request):
        phone = request.POST.get('phone')
        password = request.POST.get('password')
        
        # if phone and password:
        get_user= CustomUser.objects.filter(phone=phone).first()
        username = get_user.username
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return Response({"message": "Your are logged In!"}, status=status.HTTP_200_OK)
        else:
            return Response({"message": "Either phone number or password is wrong!"}, status=status.HTTP_400_BAD_REQUEST)
        # else:
        #     return Response({"message": "Please type again!"}, status=status.HTTP_400_BAD_REQUEST)

我得到了这个结果。为什么手机和密码都是空的?

AttributeError: 'NoneType' object has no attribute 'username'

这是我的 urls.py

 path('login/', LoginView.as_view(), name="user_login")

【问题讨论】:

  • 尝试使用request.data 代替request.POST

标签: django-rest-framework django-login


【解决方案1】:

您前端的json payload 应该以request.data 结尾。你应该尝试的是:

phone = request.data.get('phone')
password = request.data.get('password')

您也可以阅读一下here

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 2010-10-27
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多