Django 1.10+
Use un atributo, no un método:
if request.user.is_authenticated: # <- no parentheses any more!
# do something if the user is authenticated
El uso del método del mismo nombre está en desuso en Django 2.0, y ya no se menciona en la documentación de Django.
Tenga en cuenta que para Django 1.10 y 1.11, el valor de la propiedad es
CallableBool
ay no booleano, lo que puede causar algunos errores extraños. Por ejemplo, tuve una vista que devolvió JSON
return HttpResponse(json.dumps({
"is_authenticated": request.user.is_authenticated()
}), content_type='application/json')
que después de actualizar a la propiedad request.user.is_authenticated
estaba lanzando la excepción TypeError: Object of type 'CallableBool' is not JSON serializable
. La solución fue usar JsonResponse, que podría manejar el objeto CallableBool correctamente al serializar:
return JsonResponse({
"is_authenticated": request.user.is_authenticated
})