Как в Django сделать проверку, что пользователь открыл СВОЙ профиль, а не профиль другого пользователя?

Рейтинг: 0Ответов: 1Опубликовано: 02.04.2023

Такой вопрос. Как в Django сделать проверку, что пользователь открыл СВОЙ профиль, а не профиль другого пользователя? Например, в ВК можно открыть свой профиль и профиль другого человека. Вот как в Django определить это?

Ответы

▲ 0Принят

В Django вы можете использовать request.user для определения пользователя, который в данный момент авторизован и обращается к веб-странице.

Для определения, что пользователь открывает свой профиль, вы можете сравнивать значение request.user.id с ID профиля, который отображается на странице. Например, если каждый профиль имеет уникальный URL-адрес вида /profile//, то вы можете получить id из URL-адреса в представлении и сравнить его с request.user.id.

Пример кода в представлении, который проверяет, что пользователь открывает свой профиль:

from django.shortcuts import render, get_object_or_404
from django.contrib.auth.decorators import login_required
from myapp.models import UserProfile

@login_required
def profile(request, id):
    user_profile = get_object_or_404(UserProfile, id=id)
    if user_profile.user.id == request.user.id:
        # Пользователь открывает свой профиль
        # Добавьте здесь ваш код для обработки этого случая
        return render(request, 'myapp/profile.html', {'user_profile': user_profile})
    else:
        # Пользователь открывает профиль другого пользователя
        # Добавьте здесь ваш код для обработки этого случая
        return render(request, 'myapp/other_profile.html', {'user_profile': user_profile})

В этом примере мы проверяем, что id профиля из URL-адреса соответствует id пользователя, который авторизован в request.user. Если id совпадает, значит пользователь открывает свой профиль, и мы возвращаем шаблон myapp/profile.html. В противном случае мы возвращаем шаблон myapp/other_profile.html, который будет отображаться для профилей других пользователей.