Django 1.10+
Use um atributo, não um método:
if request.user.is_authenticated: # <- no parentheses any more!
# do something if the user is authenticated
O uso do método com o mesmo nome foi descontinuado no Django 2.0 e não é mais mencionado na documentação do Django.
Note que para o Django 1.10 e 1.11, o valor da propriedade é a
CallableBool
e não um booleano, o que pode causar alguns erros estranhos. Por exemplo, eu tinha uma visualização que retornava JSON
return HttpResponse(json.dumps({
"is_authenticated": request.user.is_authenticated()
}), content_type='application/json')
que depois de atualizado para a propriedade request.user.is_authenticated
estava lançando a exceção TypeError: Object of type 'CallableBool' is not JSON serializable
. A solução foi usar o JsonResponse, que poderia manipular o objeto CallableBool corretamente ao serializar:
return JsonResponse({
"is_authenticated": request.user.is_authenticated
})