Olá Leonel, tudo bem com você?
Peço desculpas pela demora em lhe responder.
Quando acessamos o nome do usuário no template dashboard.html estamos acessando a um usuário do modelo user
do Django e não a variável user
criada na rota login
. Por isso o acesso ao nome de usuário só será possível se utilizado o código Python da seguinte forma: {{ user.username }}
.
Para que um usuário fique disponível no template dashboard.html , foi utilizado a sessão do django, onde o usuário é adicionado a ela com o uso da função auth.login()
. Essa função deve receber uma requisição (request
) e um usuário que será inserido na sessão do django, no exemplo da aula é adicionado o usuário presente na variável user
. Abaixo um exemplo.
auth.login(request, user)
Quando a linha de código acima é executada, o usuário presente na variável user
é adicionado à sessão do django.
Acessando a rota de login presente no arquivo usuarios/views.py temos a seguinte declaração.
def login(request):
# Código omitido
user = auth.authenticate(request, username=nome, password=senha)
if user is not None:
auth.login(request, user)
print('Login realizado com sucesso')
return redirect('dashboard')
Nota: parte do código foi omitido por questões de didática.
No código acima, o usuário criado a partir do modelo user
é autenticado na função authenticate()
e atribuído a variável user
. Após a autenticação, esse usuário é adicionado a sessão do django com o uso da função auth.login()
. Logo após é realizado o redirecionamento a página de dashboard.
Com isso, através do uso de código Python podemos realizar o acesso ao usuário presente na sessão django. Basta informar que do modelo user
queremos apresentar o conteúdo presente na coluna username
, inserindo a seguinte linha de código {{ user.username }}
no template dashboard.html.
Você pode acompanhar na aula Realizando o Login a partir do minuto 7:20 à adição e uso da função auth.login()
no código da rota login
.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!