在mako模板中,我用这个
${request.environ['repoze.who.identity']['user']}
和控制器中的渲染:
render('file.html')
我可以更好地写这个而不必每次传递参数吗?
答案 0 :(得分:2)
好吧,您可以在/lib/base.py中的基本控制器中自动添加varible。这将自动将其添加到您的pylons应用程序中的每个控制器。我正在使用repoze.what和我所做的是在base.py我把:
# if there's no user set, just setup a blank instance
c.current_user = auth.get_user(User())
这只是我写入auth lib的一个convienence函数。 User()是User模型的空白实例,因此模板具有某些功能,并且不会引发无效的键错误。
def get_user(default):
"""Return the user object from the `repoze.who` Metadata Plugin
:param default: default item to send back if user not logged in
Since we might not be logged in and template choke on trying to output
None/empty data we can pass in a blank User object to get back as a default
and the templates should work ok with default empty values on that
"""
if 'repoze.who.identity' in request.environ:
return request.environ['repoze.who.identity']['user']
else:
return default