用户登陆后,get_secure_cookie()
只存储了用户名,然而在多个页面中会使用用户其他信息,目前的处理方法是:在BaseHandler
中返回user
:
class BaseHandler(tornado.web.RequestHandler):
"""docstring for BaseHandler"""
def get_current_user(self):
return self.get_secure_cookie('user')
@property
def user(self):
user = self.db.query(User).filter_by(username=self.current_user).one()
self.db.add(user)
self.db.commit()
return user
然后各个Handler中也返回user = self.user
,感觉太冗余了,求问各路大侠怎么解决!谢谢!
在其他继承了 BaseHandler 的 class 里,直接使用
user = self.get_current_user()
来获取当前登录用户就好了。在模板里,直接使用
{{ current_user }}
来获取当前登录用户,得到的就是BaseHandler
里get_current_user
的返回值。因为 tornado 已经帮我们做好了,因此不需要再在每个 handler 里 render 时带 user 或 current_user 出去了。