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)