linebreaksbr - Obtener información del usuario en plantillas django
python templates django (3)
¿Cuál es la mejor manera de obtener información del usuario de una plantilla django?
Por ejemplo, si solo quiero:
- Si el usuario ha iniciado sesión, muestre "Bienvenido [nombre de usuario]"
- De lo contrario, muestre el botón de inicio de sesión.
Estoy usando django-registration / authentication
Según el título de la pregunta, lo siguiente puede ser útil para alguien. Usé los siguientes en mi plantilla:
Nombre de usuario : {{ user.username }}
Nombre completo del usuario : {{ user.get_full_name }}
Grupo de usuarios : {{ user.groups.all.0 }}
Correo electrónico : {{ user.email }}
La sesión comenzó en : {{ user.last_login }}
Gracias :)
Un método alternativo para las versiones actuales de Django:
{% if user.is_authenticated %}
<p>Welcome, {{ user.get_username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
Nota:
- Utilice
request.user.get_username()
en views yuser.get_username
en plantillas. Preferido sobre el atributo deusername
referencia directamente. Source - Esta variable de contexto de plantilla está disponible si se utiliza un RequestContext.
-
django.contrib.auth.context_processors.auth
está habilitado de manera predeterminada y contiene el usuario variable - NO es necesario habilitar el procesador de contexto de la plantilla
django.core.context_processors.request
.
Fuente: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates
{% if request.user.is_authenticated %}Welcome ''{{ request.user.username }}''
{% else %}<a href="{% url django.contrib.auth.login %}">Login</a>{% endif %}
y asegúrese de tener instalado el procesador de contexto de plantilla de request
en su settings.py
:
TEMPLATE_CONTEXT_PROCESSORS = (
...
''django.core.context_processors.request'',
...
)