1 回答
TA贡献1824条经验 获得超8个赞
class BaseHandler(tornado.web.RequestHandler):
"""docstring for BaseHandler"""
def get_current_user(self):
username = self.get_secure_cookie('user')
if not username:
return None
# 这里还可以加一些其他的东西,比如时间戳啊 token 啊之类的校验
user = self.db.query(User).filter_by(username=username).first()
return user
class TopicHandler(BaseHandler):
def get(self,topic_id):
user = self.get_current_user()
if not user:
return self.write('please login first')
return self.render('topic.html')
在其他继承了 BaseHandler 的 class 里,直接使用 user = self.get_current_user()
来获取当前登录用户就好了。
在模板里,直接使用 {{ current_user }}
来获取当前登录用户,得到的就是 BaseHandler
里 get_current_user
的返回值。
因为 tornado 已经帮我们做好了,因此不需要再在每个 handler 里 render 时带 user 或 current_user 出去了。
添加回答
举报