如何在Django base.html中使用动态变量

问题描述 投票:0回答:3

我想在每一页的顶部输出'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是一个函数返回值,这个函数该写在哪里以及如何渲染这个值?

python django
3个回答
2
投票

这与是否在 base.html 中无关。它也与函数没有任何关系,因为您没有调用函数。问题很简单,您没有阅读有关模板语法的文档。在模板中,属性访问和字典查找都是通过“.”完成的。

{{ request.session.user }} 

虽然我不知道你为什么要使用会话来实现这一点,因为用户位于 request.user 中。


2
投票

在 Django 中,您不在模板代码中使用列表索引(如 request.session['user']),而是将其键入为“某种”函数,如:

request.session.user
来获取它。这就是模板系统的工作原理。

在您的用例中,可能值得注意的是 Django 有一个

request.session.user
的别名,仅称为
user
。所以如果你例如想要获取您会做的用户名:
user.username
user.first_name
作为他们的名字。您当然可以通过
request.session.user.username

实现相同的目标

1
投票

据我记得,Django 模板中已经有一个

{{ user }}
可用,如果您使用 Django 用户身份验证系统,那么您可以尝试使用
{{ user.username }}

您也可以查看此帖子。希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.