Разница между request.user и get_user(request) в Django?

Я заметил, что есть два способа получить объект пользователя из запроса (при условии, что пользователь уже вошел в систему и сессия действительна):

  • user = request.user
  • user = get_user(request), где get_user() импортируется из django.contrib.auth.

В чем разница? get_user(), кажется, делает много валидации для сессии запроса.

Что лучше?

request.user фактически заполняется get_user(request).

Это происходит в AuthenticationMiddleware:

request.user = SimpleLazyObject(lambda: get_user(request))

Таким образом, когда вы получаете request.user, вы на самом деле получаете get_user(request) результат.

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