2012-01-08 108 views
3

我想在每页顶部输出'hello,XXX'(XXX = request.session ['user']),所以我在base.html代码下编写如何在Django中使用动态变量base.html

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

而且具有TemplateSyntaxError:

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

存在有类似的问题,但我真的不明白。 Dynamic variables in Django base.html

如果XXX是一个函数返回值,在哪写这个函数以及如何渲染这个值?

谢谢:)

回答

2

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

{{ request.session.user }} 

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

+0

相同我的应用程序是一个简单的网站,不使用django身份验证。在用户登录时,会创建SESSION ['user'],request.session ['user'] = {'uid':uid,'nickname':nickname},每个页面顶部都有hello XXX。并且我在base.html中写入{{request.session.user.nickname}},但它不起作用,但会话确实创建了 – leiyonglin 2012-01-09 03:48:08

1

据我所知,Django模板中已经有一个{{ user }}可用,如果您使用Django用户认证系统,那么您可以尝试使用{{ user.username }}。您可能还会看到this thread。希望这可以帮助。

2

在Django中,您不使用模板代码中的列表索引(如request.session ['user']),而是将其输入为“sort of”功能,如:request.session.user以获取它。这就是模板系统的工作原理。

在您的使用案例中,值得注意的是Django的request.session.user的别名仅仅被称为user。所以,如果你想要获得用户名:user.usernameuser.first_name。您当然可以实现与request.session.user.username

+1

如果XXX是函数返回值,那么如何将该值呈现为base.html :) – leiyonglin 2012-01-09 02:29:54