2011-01-09 22 views

Respuesta

62

Puede verificar si request.user.is_anonymous devuelve True.

+10

Tenga en cuenta que en 'views.py' debe utilizar' request.user.is_anonymous() 'dado que es una función, mientras que en las plantillas debe usar' {{user.is_anonymous}} ' – amigcamel

+8

Parece que en Django 1.9 es más bien' is_authenticated() ': consulte https://docs.djangoproject.com/en/ 1.9/topics/auth/default/# authentication-in-web-requests –

+2

de Django 1.10, is_anonymous ya no es un método (solo una propiedad) – maxbellec

12

Una alternativa a

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

es probando a ver lo que el ID del objeto de usuario es:

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

+2

parece una mala idea. user.is_anonymous() seguirá trabajando en las nuevas versiones, es posible que user.id no lo haga, dependiendo de implementaciones futuras – maxbellec

3

Sé que estoy haciendo un poco de excavando la tumba aquí, pero una búsqueda en Google me llevó a esta página.

Si su vista def requiere que el usuario está conectado, se puede aplicar el decorador @login_required:

from django.contrib.auth.decorators import login_required 

@login_required 
def my_view(request): 
    … 
Cuestiones relacionadas