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.
Respuestas:
Puedes comprobar si request.user.is_anonymousvuelve True.
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_anonymous
request.user.is_authenticated, que es un atributo en Django 1.10+, el mismo que is_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.html
Una 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
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):
…
views.pydebe usarrequest.user.is_anonymous()ya que es una función, mientras que en las plantillas debe usar{{user.is_anonymous}}