def index(request):
the_user = request.user
En Django, ¿cómo sé si es un usuario real o no? Lo intenté:
if the_user:
pero "AnonymousUser" está ahí incluso si nadie inicia sesión. Por lo tanto, siempre devuelve verdadero y esto no funciona.
python
django
http
authentication
TIMEX
fuente
fuente
views.py
debe usarrequest.user.is_anonymous()
ya que es una función, mientras que en las plantillas debe usar{{user.is_anonymous}}
is_authenticated()
: consulte docs.djangoproject.com/en/1.9/topics/auth/default/…is_authenticated()
. Véase también thegarywilson.com/blog/2006/is_authenticated-vs-is_anonymousrequest.user.is_authenticated
, que es un atributo en Django 1.10+, el mismo queis_anonymous
ahora - vea docs.djangoproject.com/en/dev/ref/contrib/auth/… . Tenga en cuenta que si también está utilizando Django Guardian, estos atributos no harán lo que cree que harán; consulte django-guardian.readthedocs.io/en/stable/configuration.htmlUna alternativa a
if user.is_anonymous(): # user is anon user
es probando para ver cuál es la identificación del objeto de usuario:
if user.id == None: # user is anon user else: # user is a real user
ver https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users
fuente
Sé que estoy investigando un poco aquí, pero una búsqueda en Google me llevó a esta página.
Si su view def requiere que el usuario haya iniciado sesión, puede implementar el decorador @login_required:
from django.contrib.auth.decorators import login_required @login_required def my_view(request): …
fuente
Tuve un problema similar, excepto que esto estaba en una página a la que se envió login_redirect_url. Tuve que poner la plantilla:
{% if user.is_authenticated %} Welcome Back, {{ username }} {% endif %}
fuente