Django - Получить текущего пользователя

Я пытаюсь получить текущего зарегистрированного пользователя, используя следующий сериализатор:

@api_view(['GET'])
def current_user(request):
    serializer = CurrentProfileSerializer(request.user)
    return Response(serializer.data)

И это CurrentProfileSerializer:

class CurrentProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer(required=True)

    class Meta:
        model = Profile # PROFILE MODEL HAS A ONE-TO-ONE FIELD WITH USER MODEL
        fields = '__all__'
        depth = 1

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'password')

Я получаю эту ошибку, когда пытаюсь перейти к current_user URL:

Получил AttributeError при попытке получить значение для поля user на сериализаторе CurrentProfileSerializer, Поле сериализатора может иметь неправильное имя и не соответствовать ни одному атрибуту или ключу User пример. Исходный текст исключения был: объект "Пользователь" не имеет атрибута "пользователь".

1 ответ

Решение

Вам нужно пройти Profile экземпляр для сериализатора, а не User, Измените свой взгляд на это:

@api_view(['GET'])
def current_user(request):
    if not request.user.is_authenticated:
        return Response('User is not authenticated') 
    profile = Profile.objects.get(user=request.user) 
    serializer = CurrentProfileSerializer(profile)
    return Response(serializer.data)
Другие вопросы по тегам