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

时间:2012-01-08 12:38:33

标签: python django

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

谢谢:)

3 个答案:

答案 0 :(得分:2)

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

{{ request.session.user }} 

虽然我不知道你为什么要这样使用会话,因为用户在request.user中。

答案 1 :(得分:2)

在Django中,你不要在模板代码中使用列表索引(比如request.session ['user']),而是将它键入“类似”函数,如:request.session.user来获取它。这就是模板系统的工作原理。

在您的用例中,值得注意的是Django具有request.session.user的别名,仅称为user。所以,如果你是想要获取您要使用的用户名:user.usernameuser.first_name作为他们的名字。您当然可以使用request.session.user.username

实现相同的目标

答案 2 :(得分:1)

据我记得,如果您使用Django用户身份验证系统,Django模板中已经有{{ user }}可用,因此您可以尝试使用{{ user.username }}

您也可以查看this thread。希望这会有所帮助。