Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在RESTAPI中创建了登录身份验证_Python_Django_Django Rest Framework - Fatal编程技术网

Python 我在RESTAPI中创建了登录身份验证

Python 我在RESTAPI中创建了登录身份验证,python,django,django-rest-framework,Python,Django,Django Rest Framework,我在RESTAPI中创建了登录身份验证,它在postman中检索令牌密钥。现在我需要与令牌密钥关联的人的用户名 怎么做 #views.py 类登录视图(APIView): def post(自我,请求): 序列化程序=登录序列化程序(数据=请求.数据) serializer.is\u有效(raise\u exception=True) 用户=序列化程序。已验证的\u数据[“用户”] django_登录(请求,用户) 令牌,created=token.objects.get\u或\u create

我在RESTAPI中创建了登录身份验证,它在postman中检索令牌密钥。现在我需要与令牌密钥关联的人的用户名

怎么做

#views.py
类登录视图(APIView):
def post(自我,请求):
序列化程序=登录序列化程序(数据=请求.数据)
serializer.is\u有效(raise\u exception=True)
用户=序列化程序。已验证的\u数据[“用户”]
django_登录(请求,用户)
令牌,created=token.objects.get\u或\u create(user=user)
返回响应({“token”:token.key},状态=200)
#序列化程序.py
类LoginSerializer(serializers.Serializer):
username=serializers.CharField()
password=serializers.CharField()
def验证(自身、数据):
用户名=数据。获取(“用户名”,“”)
password=data.get(“password”,“”)
如果用户名和密码:
用户=验证(用户名=用户名,密码=密码)
如果用户:
如果user.u处于活动状态:
数据[“用户”]=用户
其他:
msg=“用户已停用。”
引发异常。ValidationError(msg)
其他:
msg=“无法使用给定凭据登录。”
引发异常。ValidationError(msg)
其他:
msg=“必须同时提供用户名和密码。”
引发异常。ValidationError(msg)
返回数据

登录身份验证后,方法(身份验证方法)将返回用户,因此您可以像这样获取用户数据

username = user.username
例如:

类登录视图(APIView):


在序列化程序文件中?您想将用户名和令牌一起传递,对吗?它应该在登录后打印在令牌附近。您可以在此处发布代码,我不理解我是编程新手
def post(self, request):

    serializer = LoginSerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    user = serializer.validated_data["user"]
    django_login(request, user)
    token, created = Token.objects.get_or_create(user=user)
    return Response({"token": token.key , "username":user.username},status=200)