Je regarde ce site Web, mais je n'arrive pas à comprendre comment le faire car cela ne fonctionne pas. Je dois vérifier si l'utilisateur actuel du site est connecté (authentifié) et j'essaie:
request.user.is_authenticated
bien qu'il soit sûr que l'utilisateur est connecté, il renvoie juste:
>
Je suis capable de faire d'autres requêtes (à partir de la première section de l'URL ci-dessus), telles que:
request.user.is_active
qui renvoie une réponse réussie.
python
django
authentication
Meule
la source
la source
Réponses:
Mise à jour pour Django 1.10+ :
is_authenticated
est désormais un attribut dans Django 1.10. La méthode existe toujours pour la compatibilité descendante, mais sera supprimée dans Django 2.0.Pour Django 1.9 et versions antérieures :
is_authenticated
est une fonction. Vous devriez l'appeler commeComme Peter Rowell l'a souligné, ce qui peut vous tromper, c'est que dans le langage de modèle Django par défaut, vous n'insérez pas de parenthèses pour appeler des fonctions. Vous avez donc peut-être vu quelque chose comme ça dans le code du modèle:
Cependant, dans le code Python, il s'agit bien d'une méthode de la
User
classe.la source
Django 1.10+
Utilisez un attribut, pas une méthode:
L'utilisation de la méthode du même nom est déconseillée dans Django 2.0 et n'est plus mentionnée dans la documentation Django.
Notez que pour Django 1.10 et 1.11, la valeur de la propriété est un
CallableBool
et non un booléen, ce qui peut provoquer des bugs étranges. Par exemple, j'avais une vue qui renvoyait JSONqu'après la mise à jour de la propriété
request.user.is_authenticated
levait l'exceptionTypeError: Object of type 'CallableBool' is not JSON serializable
. La solution était d'utiliser JsonResponse, qui pouvait gérer correctement l'objet CallableBool lors de la sérialisation:la source
request.user
. Qu'un utilisateur soit connecté ou non importe uniquement dans le contexte de la demande, par exemple la session du navigateur.Le bloc suivant devrait fonctionner:
la source
À votre avis:
Dans vos fonctions de contrôleur, ajoutez un décorateur:
la source
request.user.is_authenticated
si vous savez que votre application déconnectera toujours l'utilisateurSi vous souhaitez rechercher des utilisateurs authentifiés dans votre modèle, alors:
la source
Pour les versions de Django 2.0+ , utilisez:
Pour plus d'informations, visitez https://www.django-rest-framework.org/api-guide/requests/#auth
request.user.is_authenticated () a été supprimé dans les versions de Django 2.0+.
la source
request.user.is_authenticated
est toujours valide. Vous faites référence à la documentation de django-rest-framework et non à django