Question

J'utilise django-enregistrement, et tout mettre en place.

{{user.is_authenticated }}

est vrai, même si je suis déjà à / comptes / fermeture de session / et l'utilisateur connecté sur.

{{user.is_anonymous }} 

retourne vrai aussi. Selon django docs, ces deux devraient être différentes:

  

is_anonymous: retourne toujours Faux. Ceci est une façon de différencier les objets utilisateur et AnonymousUser. En général, vous devriez préférer utiliser is_authenticated () à cette méthode.

et

  

is_authenticated: retourne toujours vrai. Ceci est un moyen de savoir si l'utilisateur a été authentifié. Cela ne signifie pas toutes les autorisations, et ne vérifie pas si l'utilisateur est actif -. Il indique seulement que l'utilisateur a fourni un nom d'utilisateur et mot de passe

J'utilise les vues standard qui viennent avec django-inscription et ne sont pas encore touchés eux. Dans le tempalate j'ai le code suivant:

{% if user.is_authenticated %}
{% user }}
{% if user.is_anonymous %}
    is anonymous
{% endif $}
{% else %}
    gotta login
{% endif %}

Si le problème serait? Je serai très reconnaissant!

Mise à jour: J'ai remarqué que sur la page d'accueil, à la fois le retour is_authenticated et id_anonymous vrai, alors que si je vais à / comptes / login avant LOGING en, ne retourne que is_anonymous vrai qu'il devrait être. Et aussi, sur la page d'accueil, j'ai la vue suivante si cela aide:

def home(request):
    return render_jinja(request, 'index.html', blah = 'ga')

UPDATE 2: imprimer (request.user.is_authenticated ()) donne de faux. , J'ai alors:

return render_jinja(request, 'index.html', blah = 'ga')

et dans le modèle, les rendements user.is_authenticated FAUX.

UPDATE 3: Si j'utilise render_to_response, au lieu de render_jinja, tout est bon. ne savent toujours pas comment résoudre ce problème si: (

Était-ce utile?

La solution

Il semble que vous essayez de comprendre deux choses à la fois; ce qui est la bonne façon d'utiliser des modèles de Jinja et quel est le problème avec l'utilisateur / AnonymousUser. Peut-être essayer de comprendre ces problèmes un à la fois.

Je n'ai aucune expérience avec Jinja mais vous pouvez vérifier et assurez-vous que vous prenez des différences entre Jinja et django modèle de syntaxe en compte. La plus grande différence que je connaisse est qu'un appel de méthode nécessite parenthèse explicite. Ainsi, les appels is_authenticated et is_anonymous dans votre exemple parenthèse besoin.

Jinja style {{ user.is_authenticated() }}
Django style {{ user.is_authenticated }} 

Si cela ne résout pas le problème, essayez d'installer django-debug-barre d'outils jetez un oeil au contexte de votre modèle. Vérifier et voir si user est Aucun ou un objet (ou l'utilisateur AnonymousUser).

Vous pouvez également lire sur AnonymousUser et voir un exemple de vérification d'un utilisateur authentifié dans la documentation. En un mot, pour un objet AnonymousUser is_anonymous () retourne toujours vrai au lieu de faux et is_authenticated () retourne toujours Faux au lieu de True.

Autres conseils

claque sur la tête. Je lis quelque part:

  

si user.is_authenticated:       .... # toujours vrai, car il est une méthode!

Et donc, au lieu d'avoir {{}} user.is_authenticated dans le modèle, il devrait être {{user.is_authenticated ()}}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top