Как использовать динамические переменные в Django base.html - PullRequest
3 голосов
/ 08 января 2012

Я хочу вывести 'hello, XXX' (XXX = request.session ['user']) вверху каждой страницы, поэтому я пишу под кодом в base.html

hello {{ request.session['user'] }}

и там есть TemplateSyntaxError:

Could not parse the remainder: '['user']' from 'request.session['user']'

есть похожий вопрос, но я действительно не понимаю. Динамические переменные в Django base.html

если XXX - возвращаемое значение функции, где написать эту функцию и как отобразить это значение?

спасибо:)

Ответы [ 3 ]

2 голосов
/ 08 января 2012

В Django вы не используете списочные индексы в коде шаблона (например, request.session ['user']), вместо этого вы набираете его как функцию "сортировки", например: request.session.user, чтобы получить ее.Именно так работает система шаблонов.

В вашем случае использования стоит отметить, что у Django есть псевдоним для request.session.user, который просто называется user.Поэтому, если вы, например, хотите получить имя пользователя, вы должны сделать: user.username или user.first_name для их имени.Конечно, вы можете достичь того же с request.session.user.username

2 голосов
/ 08 января 2012

Это не имеет ничего общего с находящимся в base.html.Это также не имеет ничего общего с функциями, так как вы не вызываете функцию.Проблема в том, что вы не читали документацию по синтаксису шаблона.В шаблоне доступ к атрибутам и поиск по словарю выполняются с помощью «.».

{{ request.session.user }} 

Хотя я не знаю, почему вы все равно хотите использовать сеанс для этого, так как пользователь находится в request.user.

1 голос
/ 08 января 2012

Насколько я помню, в шаблонах Django уже есть {{ user }}, если вы используете систему аутентификации пользователей Django, так что вы можете попробовать использовать {{ user.username }}.

Вы также можете посмотретьна этой теме .Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...