web-dev-qa-db-fra.com

Comment puis-je vérifier si cet utilisateur est anonyme ou réellement un utilisateur sur mon système?

def index(request):
    the_user = request.user

Dans Django, comment savoir si c'est un vrai utilisateur ou non? J'ai essayé:

if the_user: mais "AnonymousUser" est là même si personne ne se connecte. Donc, il retourne toujours true et cela ne fonctionne pas.

48
TIMEX

Vous pouvez vérifier si request.user.is_anonymous renvoie True.

85
Daniel DiPaolo

Une alternative à 

if user.is_anonymous():
    # user is anon user

est en testant pour voir quel est l'identifiant de l'objet utilisateur:

if user.id == None:
    # user is anon user
else:
    # user is a real user

voir https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users

11
leifos

Je sais que je creuse un peu ici, mais une recherche sur Google m'a amené à cette page.

Si votre vue nécessite que l'utilisateur soit connecté, vous pouvez implémenter le décorateur @login_required:

from Django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    …
3
Karl M.W.

J'ai eu un problème similaire, sauf que c'était sur une page à laquelle le login_redirect_url a été envoyé. Je devais mettre dans le modèle:

{% if user.is_authenticated %}
    Welcome Back, {{ username }}
{% endif %}
0
Harlin