Django 1.10 +
Использовать атрибут, не метод:
if request.user.is_authenticated: # <- no parentheses any more!
# do something if the user is authenticated
Использование метода с тем же именемустарела в Django 2.0 и больше не упоминается в документации Django.
Обратите внимание, что для Django 1.10 и 1.11 значение свойства равно
CallableBool
, а не логическому значению,вызвать некоторые странные ошибки.Например, у меня было представление, которое возвращало JSON
return HttpResponse(json.dumps({
"is_authenticated": request.user.is_authenticated()
}), content_type='application/json')
, которое после обновления до свойства request.user.is_authenticated
выдавало исключение TypeError: Object of type 'CallableBool' is not JSON serializable
.Решением было использование JsonResponse, который мог правильно обрабатывать объект CallableBool при сериализации:
return JsonResponse({
"is_authenticated": request.user.is_authenticated
})