2012-09-27 155 views
61

¿Cómo obtener la identificación del usuario actualmente conectado?¿Cómo obtener el ID de usuario del usuario actualmente conectado en Django?

en models.py:

class Game(models.model): 
    name = models.CharField(max_length=255) 
    owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner') 

en views.py:

gta = Game.objects.create(name="gta", owner=?) 
+0

duplicado posible de [en Django, ¿cómo sé que ha iniciado la sesión en el usuario?] (http://stackoverflow.com/questions/1477319/in-django-how-do-i-know- the-currently-logged-in-us er) –

Respuesta

108

En primer lugar asegúrese de que tiene SessionMiddleware y AuthenticationMiddleware middleware añadido a su entorno MIDDLEWARE_CLASSES.

La corriente es user en request objeto, lo puede conseguir por:

def sample_view(request): 
    current_user = request.user 
    print current_user.id 

request.user le dará un objeto que representa el momento User usuario conectado. Si un usuario no está actualmente conectado, request.user se establecerá en una instancia de AnonymousUser. Puede distinguirlos con is_authenticated(), así:

if request.user.is_authenticated(): 
    # Do something for authenticated users. 
else: 
    # Do something for anonymous users. 
+0

Referencia: https://docs.djangoproject.com/en/1.7/topics/auth/default/#authentication-in-web-requests – aliteralmind

+1

¿Qué ocurre si queremos establecer el ID de usuario de la clave foránea en un modelo que es el ¿Ha iniciado sesión en la identificación del usuario? –

+0

Ya no es necesario que actualice la configuración. https://docs.djangoproject.com/en/1.11/topics/auth/default/#authentication-in-web-requests –

5

Suponiendo que usted se refiere a Django Auth User, en su opinión:

def game(request): 
    user = request.user 

    gta = Game.objects.create(name="gta", owner=user) 
8

Puede acceder conectados en ese usuario mediante el siguiente código:

request.user.id 
Cuestiones relacionadas