Атрибут user

Атрибут user класса HttpRequest предоставляет доступ к модели пользователя, связанной с текущим запросом. Этот атрибут автоматически заполняется промежуточным программным обеспечением аутентификации Django, которое добавляет объект пользователя к каждому запросу. Если пользователь не аутентифицирован, атрибут содержит экземпляр анонимного пользователя, который не имеет прав доступа. Атрибут позволяет проверять статус аутентификации, получать данные пользователя и управлять сессиями.

Синтаксис

pythonrequest.user

Пример

Давайте проверим, аутентифицирован ли текущий пользователь, и выведем его имя:

pythonfrom django.shortcuts import render
from django.http import HttpResponse

def user_profile(request):
  if request.user.is_authenticated:
    username = request.user.username
    return HttpResponse(f"Welcome, {username}!")
  else:
    return HttpResponse("Please log in.")

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

python"Welcome, john_doe!"

Пример

Давайте используем атрибут user для проверки прав доступа и получения связанных данных:

pythonfrom django.shortcuts import render
from myapp.models import Article

def my_articles(request):
  if request.user.is_authenticated:
    articles = Article.objects.filter(author=request.user)
    context = {'articles': articles, 'user': request.user}
    return render(request, 'my_articles.html', context)
  else:
    return render(request, 'login_required.html')

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

python[<Article: Первая статья пользователя>, <Article: Вторая статья пользователя>]

Пример

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

pythonfrom django.shortcuts import render

def profile_view(request):
  user = request.user
  if user.is_authenticated:
    user_data = {
      'username': user.username,
      'email': user.email,
      'first_name': user.first_name,
      'last_name': user.last_name,
      'is_active': user.is_active,
      'is_staff': user.is_staff
    }
    return render(request, 'profile.html', {'user_data': user_data})
  else:
    return render(request, 'login.html')

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

python{
  'username': 'john_doe',
  'email': 'john@example.com',
  'first_name': 'John',
  'last_name': 'Doe',
  'is_active': True,
  'is_staff': False
}

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

  • атрибут GET,
    который содержит параметры GET-запроса
  • атрибут POST,
    который содержит данные POST-запроса
  • атрибут session,
    который предоставляет доступ к сессии пользователя
  • атрибут method,
    который возвращает HTTP-метод запроса