variable template ifequal for examples bootstrap python django django-templates

python - ifequal - django templates settings



¿Cómo acceder al perfil de usuario en una plantilla de Django? (5)

No estoy seguro de por qué es diferente para mí, pero necesito usar {{user}} en lugar de {{request.user}}.

Estoy almacenando información adicional por usuario usando AUTH_PROFILE_MODULE .

Podemos acceder al usuario en una plantilla de Django usando {{ request.user }} pero ¿cómo accedemos a los campos en el perfil ya que solo se puede acceder al perfil a través de una función user.get_profile() ?

¿Se requiere realmente pasar explícitamente el perfil a la plantilla todo el tiempo?


Sí, es posible acceder al perfil desde la plantilla mediante request.user.get_profile

Sin embargo, hay una pequeña advertencia : no todos los usuarios tendrán perfiles, que fue en mi caso con los usuarios administradores. Por lo tanto, llamar directamente a {{ request.user.get_profile.whatever }} desde la plantilla provocará un error en tales casos.

Si está seguro de que todos sus usuarios siempre tienen perfiles, es seguro llamar desde la plantilla, de lo contrario, llame a get_profile() desde try-except block en su vista y páselo a la plantilla.


Si ayuda a alguien, utilicé 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 }}

Un resultado de muestra es como esto:

Usuario: auditor ezio

Grupo de usuarios: auditGroup

Nombre de usuario: testUser03

Correo electrónico: [email protected]

La sesión comenzó el 16 de abril de 2018 a las 9:38 p.m.

Gracias :)


Si está usando Django> 1.5, ya no puede usar get_profile .

Si tiene una aplicación heredada, debe eliminar AUTH_PROFILE_MODULE = ''myapp.profile'' de su settings.py .

Si usa models.OneToOneField(User) en su clase Profile, simplemente puede usar

{{ request.user.profile.whatever }}

en tu plantilla de Django


Utilice {{ request.user.get_profile.whatever }} . El lenguaje de plantillas de Django llama automáticamente a las cosas que se pueden llamar, en este caso, el método .get_profile() .