我想在每个页面的顶部输出'hello,XXX'(XXX = request.session ['user']),所以我在base.html的代码下编写
hello {{ request.session['user'] }}
并且有TemplateSyntaxError:
Could not parse the remainder: '['user']' from 'request.session['user']'
有类似的问题,但我真的不明白。 Dynamic variables in Django base.html
如果XXX是函数返回值,在哪里写这个函数以及如何渲染这个值?
谢谢:)
答案 0 :(得分:2)
这与在base.html中无关。它也不与函数有任何关系,因为你没有调用函数。问题只是您没有阅读有关模板语法的文档。在模板中,属性访问和字典查找都使用“。”完成。
{{ request.session.user }}
虽然我不知道你为什么要这样使用会话,因为用户在request.user中。
答案 1 :(得分:2)
在Django中,你不要在模板代码中使用列表索引(比如request.session ['user']),而是将它键入“类似”函数,如:request.session.user
来获取它。这就是模板系统的工作原理。
在您的用例中,值得注意的是Django具有request.session.user
的别名,仅称为user
。所以,如果你是想要获取您要使用的用户名:user.username
或user.first_name
作为他们的名字。您当然可以使用request.session.user.username
答案 2 :(得分:1)
据我记得,如果您使用Django用户身份验证系统,Django模板中已经有{{ user }}
可用,因此您可以尝试使用{{ user.username }}
。
您也可以查看this thread。希望这会有所帮助。