vistas urls template genericas examples bootstrap python django django-templates django-views models

python - urls - ¿Cómo puedo obtener el nombre de usuario del usuario que inició sesión en Django?



render django (5)

'' request.user '' tiene el usuario conectado.
'' request.user.username '' devolverá el nombre de usuario del usuario conectado.

¿Cómo puedo obtener información sobre el usuario que inició sesión en una aplicación de Django?

Por ejemplo:

Necesito saber el nombre de usuario del usuario que inició sesión para decir quién publicó una revisión:

<form id=''formulario'' method=''POST'' action=''''> <h2>Publica tu tuit, {{ usuario.username.title }} </h2> {% csrf_token %} {{formulario.as_p}} <p><input type=''submit'' value=''Confirmar'' /></p> </form>

En usuario.username.title , obtengo el nombre de usuario, pero en la plantilla, necesito obtener esa información de la vista.

Gracias. =)


Puede usar el objeto de solicitud para encontrar el usuario conectado

def my_view(request): username = None if request.user.is_authenticated(): username = request.user.username

De acuerdo con https://docs.djangoproject.com/en/2.0/releases/1.10/

En la versión Django 2.0, la sintaxis ha cambiado a

request.user.is_authenticated


si está utilizando la forma antigua de escribir vistas, en el modo de Vistas basadas en funciones ...

en su opinión, está creando una nueva variable llamada usuario para guardar la request.user probablemente ...

pero si regresa a la Template una context_instance , pasando el valor del Contexto de la solicitud, obtendrá el usuario registrado, simplemente accediendo a la request .

// In your views file from django.shortcuts import render_to_response from django.template import RequestContext def your_view(request): data = { ''formulario'': Formulario() # ... } return render_to_response(''your_template.html'', data, context_instance=RequestContext(request)) // In your template <form id=''formulario'' method=''POST'' action=''''> <h2>Publica tu tuit, {{ request.user.username.title }} </h2> {% csrf_token %} {{ formulario.as_p }} <p><input type=''submit'' value=''Confirmar'' /></p> </form>


request.user.get_username() devolverá una cadena del correo electrónico de los usuarios.

request.user.username devolverá un método.


request.user.get_username() o request.user.username , el primero es preferido.

Django dice:

Como el modelo de usuario puede intercambiarse, debe usar este método en lugar de hacer referencia al atributo de nombre de usuario directamente.

PS Para plantillas, use {{ user.get_username }}