РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
581 of 818 menu

Функция get_user

Функция get_user применяется для получения объекта пользователя по идентификатору (user ID) из запроса или сессии. Она принимает объект запроса и возвращает объект пользователя, если он найден, или экземпляр AnonymousUser, если пользователь не авторизован или не существует. Функция автоматически обрабатывает кеширование пользователя в сессии для оптимизации производительности. Это удобный способ получения текущего пользователя в представлениях, если вы не используете стандартный middleware, либо при работе с пользовательскими сессиями.

Синтаксис

get_user(request)

Параметры

Функция принимает один обязательный параметр:

  • request - объект HTTP-запроса Django, содержащий информацию о сессии и пользователе. Обычно это объект, передаваемый в представление.

Возвращаемое значение

Функция возвращает объект пользователя (экземпляр модели User), если пользователь авторизован и его идентификатор найден в сессии. В противном случае возвращается объект AnonymousUser.

Пример . Использование в представлении

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

from django.contrib.auth import get_user from django.http import HttpResponse def my_view(request): user = get_user(request) if user.is_authenticated: return HttpResponse(f"Hello, {user.username}!") return HttpResponse("Hello, Guest!")

Результат выполнения кода при авторизованном пользователе:

"Hello, john_doe!"

Результат выполнения кода для неавторизованного пользователя:

"Hello, Guest!"

Пример . С проверкой прав доступа

Рассмотрим пример, где мы проверяем права пользователя на основе его роли:

from django.contrib.auth import get_user from django.http import HttpResponse, HttpResponseForbidden def dashboard_view(request): user = get_user(request) if user.is_authenticated and user.is_staff: return HttpResponse("Welcome to admin dashboard!") return HttpResponseForbidden("Access denied")

Результат выполнения кода для администратора:

"Welcome to admin dashboard!"

Результат выполнения кода для обычного пользователя:

"Access denied"

Пример . С использованием в шаблоне

Функцию get_user можно вызывать в представлении и передавать результат в контекст шаблона:

from django.contrib.auth import get_user from django.shortcuts import render def profile_view(request): user = get_user(request) context = { 'user': user, 'is_admin': user.is_superuser if user.is_authenticated else False, } return render(request, 'profile.html', context)

Затем в шаблоне можно использовать переданные данные:

<h1>User Profile</h1> <p>Username: {{ user.username }}</p> <p>Email: {{ user.email }}</p> {% if is_admin %} <p>You have admin privileges</p> {% endif %}

Пример . Работа с сессией

Функция get_user также может быть полезна при работе с кастомной аутентификацией, когда идентификатор пользователя хранится в сессии вручную:

from django.contrib.auth import get_user from django.contrib.auth import login from django.shortcuts import redirect def custom_login_view(request): user_id = request.session.get('custom_user_id') if user_id: user = get_user(request) if user.is_authenticated: login(request, user) return redirect('dashboard') return redirect('login')

Смотрите также

  • функция authenticate,
    которая выполняет аутентификацию пользователя
  • функция login,
    которая выполняет вход пользователя в систему
  • функция get_user_model,
    которая возвращает кастомную модель пользователя
  • функция logout,
    которая выполняет выход пользователя из системы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить