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()
.