Как получить экземпляр пользователя в приложении 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
.