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.
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 }}