print(self.request.user.id) returns None



我有一个Django REST应用程序,我想在那里登录。我需要currend登录用户的id,当我打印它时,它会返回None。这是我的代码:serializer.py

class LoginSerializer(serializers.Serializer):

username = serializers.CharField(
label="Username",
write_only=True
)
password = serializers.CharField(
label="Password",
# This will be used when the DRF browsable API is enabled
style={'input_type': 'password'},
trim_whitespace=False,
write_only=True
)

view.py

class LoginAPI(APIView):
def post(self, request):
username = request.data['username']
password = request.data['password']
user = User.objects.filter(username=username).first()
if user is None:
raise AuthenticationFailed('User not found!')
if not user.check_password(password):
raise AuthenticationFailed('Incorrect password!')
payload = {
'id': user.id,
}
token = jwt.encode(payload, 'secret', algorithm='HS256').decode('utf-8')
response = Response()
response.set_cookie(key='token', value=token, httponly=True)
response.data = {
'token': token
}
print(self.request.user.id)
return response

我不知道我必须在登录视图中更改什么才能打印id,而不是"无"。

您还没有登录post函数。所以self.request.user不存在。

print(user.id)

最新更新