Как получить экземпляр пользователя в приложении django

Я пытаюсь получить экземпляр пользователя для страницы профиля в приложении django, но сталкиваюсь с некоторыми трудностями в реализации этой функциональности. У меня есть следующие блоки кода:

models.py

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, primary_key=True, on_delete=models.CASCADE, default="")
    image = models.ImageField(upload_to="images/user_profile_pics/", default="images/default_profile_pics/default.jpg")
    firstname = models.CharField(max_length=50)
    lastname = models.CharField(max_length=50)

    def __str__(self):
        return f'{self.lastname} profile'

serializers.py

class user_profile_serializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = '__all__'

views.py

class user_profile(generics.GenericAPIView):
    serializer_class = user_profile_serializer
    
    def get(self, request, *args, **kwargs):
        user = request.user
        return Response(user.data, status=status.HTTP_200_OK)

urls.py

urlpatterns = [
    path('profile/', user_profile.as_view(), name="user-profile"),
]

Когда я оцениваю url профиля, я получаю сообщение об ошибке 'AnonymousUser' object has no attribute 'data' Я попробовал несколько подходов, но ни один не сработал. Пожалуйста, как мне получить конкретного пользователя из базы данных?

request.user является AnonymousUser, когда пользователь не вошел в систему. В этом случае объект не имеет атрибута data. Отсюда и ошибка, которую вы получаете. Можно сделать следующее: проверить request.user.is_authenticated и, если пользователь не аутентифицирован, вернуть другое значение / или None. И попробуйте войти в систему, прежде чем пытаться получить доступ к значению user.data.

Вернуться на верх