• Tornado自定义Session


    #!/usr/bin/env python
    import tornado.ioloop
    import tornado.web
    
    container = {}
    class Session:
        def __init__(self,handler):
            self.handler = handler
            self.random_str = None
    
        def __set_random_str(self):
            import hashlib
            import time
            obj = hashlib.md5 ( )
            obj.update ( bytes ( str ( time.time ( ) ), encoding='utf-8' ) )
            random_str = obj.hexdigest ()
            return random_str
        def __setitem__(self,key,value):
            if not self.random_str:
                random_str = self.handler.get_cookie('__kakaka__')
                if not random_str:
                    random_str = self.__set_random_str()
                    container[random_str] = {}
                else:
                    if random_str in container.keys():
                        pass
                    else:
                        random_str = self.__set_random_str()
                        container[random_str] = {}
                self.random_str = random_str
            container[self.random_str][key] = value
            self.handler.set_cookie("__kakaka__",self.random_str)
        def __getitem__(self,key):
            random_str = self.handler.get_cookie('__kakaka__')
            if not random_str:
                return None
            user_info_dict = container.get(random_str,None)
            if not user_info_dict:
                return None
            value = user_info_dict.get(key,None)
            return value
    class BaseHandler(tornado.web.RequestHandler):
        def initialize(self):
            self.session = Session(self)
    class IndexHander(BaseHandler):
        def get(self, *args, **kwargs):
            if self.get_argument('u',None)in['alex','eric']:
                self.session['is_login'] = True
                self.session['name'] = self.get_argument('u',None)
               
            else:
                self.write('请登录')
    class ManagerHandler(BaseHandler):
        def get(self, *args, **kwargs):
            val = self.session['is_login']
            if val:
                self.write(self.session['name'])
            else:
                self.write("失败")
    
    settings = {
        "template_path":"views",
        "static_path":"statics",
        "cookie_secret":"taochen"
    }
    
    application = tornado.web.Application([
        (r"/index",IndexHander),
        (r"/manager",ManagerHandler),
    ],**settings)
    
    if __name__ == '__main__':
        application.listen(8888)
        tornado.ioloop.IOLoop.instance().start()
    app.py
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
         <div>首页</div>
    </body>
    </html>
    index.html
  • 相关阅读:
    test
    莫烦Python
    资源汇总
    AutoHotkey学习资源
    神器AutoHotkey学习(官方文档翻译)
    linux内核编译时bad register name `%dil'错误
    Linux内核修炼之道-->原作者博客链接--oschina备份
    vim笔记--oschina备份
    vim相关资源--oschina备份
    Windows下装Gvim时可能发生的错误--oschina备份
  • 原文地址:https://www.cnblogs.com/shiluoliming/p/6560047.html
Copyright © 2020-2023  润新知