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.pydebe 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_anonymousahora - 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 useres 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 userver 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