Разница между 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)
результат.