Динамическое отображение в базовом HTML с использованием DJango

#html #djan&o

#HTML #djan&o

Вопрос:

Я новичок в DJan&o и создаю веб-сайт. Я создал базовую HTML-страницу с навигационной панелью, которая будет использоваться на всех страницах. Я хочу отображать сообщение «Добро пожаловать ‘username'» в качестве первой строки на всех страницах.

Я написал следующий код в views.py

 def &etusername(request):
uname=request.&etusername()
return render(request,'main.html',{'uname':uname})
  

в main.html после определения заголовка и основной строки у меня есть следующий html-код

 <span class="label label-default"&&t;Welcome{{uname}}</span&&t;
  

Когда я запускаю этот код, я могу просматривать панель навигации на всех страницах, которые расширяют базовую страницу (main.html )

но в приветственном сообщении не отображается имя пользователя.

Я настроил следующее в urls.py

 path("", views.&etusername,name='&etusername')
  

Примечание: даже когда я жестко кодирую строку, которая должна быть возвращена из views.py строка не отображается как часть приветственного сообщения

Ответ №1:

В каждом шаблоне у вас есть доступ к объекту user. Вы можете проверить, аутентифицирован ли пользователь:

 {% if user.is_authenticated %}
    Welcome, {{ user.username }}
{% else %}
    # show re&ister or(and) lo&in button
{% endif %}
  

Комментарии:

1. Сегодня я провел небольшую проверку, без каких-либо изменений в приведенном выше коде я просмотрел базовый HTML (в моем случае main, html). Я мог видеть отображаемое имя пользователя, с которым я вошел в систему. @qwanysh, я добавил предложенный вами фрагмент кода в свой базовый HTML, и он всегда вводит остальную часть кода. значение для user.username является пустой строкой