我想在每一页的顶部输出'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是一个函数返回值,这个函数该写在哪里以及如何渲染这个值?
这与是否在 base.html 中无关。它也与函数没有任何关系,因为您没有调用函数。问题很简单,您没有阅读有关模板语法的文档。在模板中,属性访问和字典查找都是通过“.”完成的。
{{ request.session.user }}
虽然我不知道你为什么要使用会话来实现这一点,因为用户位于 request.user 中。
在 Django 中,您不在模板代码中使用列表索引(如 request.session['user']),而是将其键入为“某种”函数,如:
request.session.user
来获取它。这就是模板系统的工作原理。
在您的用例中,可能值得注意的是 Django 有一个
request.session.user
的别名,仅称为 user
。所以如果你例如想要获取您会做的用户名: user.username
或 user.first_name
作为他们的名字。您当然可以通过 request.session.user.username
实现相同的目标
据我记得,Django 模板中已经有一个
{{ user }}
可用,如果您使用 Django 用户身份验证系统,那么您可以尝试使用 {{ user.username }}
。
您也可以查看此帖子。希望这有帮助。