Python tornado用户登录调用管理问题,pythontornado,用户登陆后,get_se
Python tornado用户登录调用管理问题,pythontornado,用户登陆后,get_se
用户登陆后,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,感觉太冗余了,求问各路大侠怎么解决!谢谢!
pythonclass 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 userclass 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 出去了。
编橙之家文章,
相关内容
- python dict能完成ruby中Hash的同样效果吗?,rubyhash,ruby中
- 请python大牛指点表单api上传403问题解法,python403,错误提
- Python图片处理用什么库能把文档/白板照片变得更清晰,
- python中有什么方法可以完成增量更新及预测算法的实现
- pycharm unicode字符编码显示中文问题求助,pycharmunicode,再
- Python start事件读取xml Ignoring item: 'NoneType' object,ignori
- Python对XML大文件数据去重什么方法好,pythonxml文件数据
- Python项目运行找不到模块问题,python模块,背景在subli
- 求Python正则匹配高手帮我查下源码问题在哪里,python源
- 请问Flask开发应用nginx与uwsgi应该如何部署,flasknginx,使
评论关闭