尝试获取当前用户,但显示用户名密钥错误,但从我这边来看一切都很好。谁能告诉我错误是什么?
观点:
@api_view(['POST'])
def register(request):
data = request.data
user = SignUpSerializer(data=data)
if user.is_valid():
if not User.objects.filter(username = data['email']).exists():
user = User.objects.create(
first_name = data['first_name'],
last_name = data['last_name'],
username = data['email'],
email = data['email'],
password = make_password(data['password'])
)
return Response({
'details':'Sucessfully registered.'
}, status.HTTP_201_CREATED)
else:
return Response({
'error':'User already exists.'
}, status.HTTP_400_BAD_REQUEST)
else:
return Response(user.errors)
这是 UserSerializer 视图。
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def current_user(request):
user = UserSerializer(request.data)
print(user)
return Response(user.data)
序列化器.py:
class SignUpSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'password')
extra_kwargs = {
'first_name':{'required':True, 'allow_blank':False},
'last_name':{'required':True, 'allow_blank':False},
'email':{'required':True, 'allow_blank':False},
'password':{'required':True, 'allow_blank':False, 'min_length':4}
}
这是用户序列化器
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'username')
用这个代替。将 request.data 替换为 request.user
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def current_user(request):
user = UserSerializer(request.user)
print(user)
return Response(user.data)