Estou armazenando algumas informações adicionais por usuário usando o AUTH_PROFILE_MODULE
.
Podemos acessar o usuário em um modelo Django usando, {{ request.user }}
mas como acessamos os campos no perfil, uma vez que o perfil só é acessível por meio de uma função user.get_profile()
?
É realmente necessário passar explicitamente o perfil para o modelo todas as vezes?
python
django
django-templates
Swaroop CH
fonte
fonte
Não sei por que é diferente para mim, mas preciso usar {{user}} em vez de {{request.user}}.
fonte
django.template.context_processors.request
insererequest
no template, enquanto odjango.contrib.auth.context_processors.auth
insereuser
no contexto. docs.djangoproject.com/en/1.10/ref/templates/api/…Sim, é possível acessar o perfil do template usando request.user.get_profile
No entanto, há uma pequena advertência : nem todos os usuários terão perfis, o que foi no meu caso com usuários administradores. Portanto, chamar diretamente
{{ request.user.get_profile.whatever }}
do modelo causará um erro nesses casos.Se você tiver certeza de que todos os seus usuários sempre têm perfis, é seguro chamar a partir do modelo, caso contrário, ligue
get_profile()
de dentro do bloco try-except em sua visualização e passe para o modelo.fonte
{{ request.user.get_profile.whatever }}
, mas{{ request.user.get_profile }}
funcionará e pode ser usado para verificar se um perfil existe ou não nas versões atuais. Consulte docs.djangoproject.com/en/dev/ref/templates/api/… . Há uma observação de que isso mudará na versão de desenvolvimento, porém, veja o parágrafo acima daquele ao qual vinculei.Se você estiver usando Django> 1.5, você não pode mais usar
get_profile
.Se você tiver um aplicativo legado, deverá removê-lo
AUTH_PROFILE_MODULE = 'myapp.profile'
do seusettings.py
.Se você usar
models.OneToOneField(User)
em sua classe de perfil, você pode simplesmente usarno seu modelo Django
fonte
request
teclado na frente?Se isso ajudar alguém, usei o seguinte em meu modelo:
Nome do usuário:
{{ user.username }}
Nome completo do usuário:
{{ user.get_full_name }}
Grupo de usuários:
{{ user.groups.all.0 }}
O email:
{{ user.email }}
Sessão iniciada em:
{{ user.last_login }}
Um resultado de amostra é assim:
Obrigado :)
fonte
Trabalhando !
Em seu modelo de perfil, forneça related_name
Em seguida, em uso de modelo. Aqui company_name é o campo na tabela de perfil
fonte