template linebreaksbr examples bootstrap django django-authentication django-registration

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:

  1. Si el usuario ha iniciado sesión, muestre "Bienvenido [nombre de usuario]"
  2. 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 y user.get_username en plantillas. Preferido sobre el atributo de username 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'', ... )