tornado使用元類(metaclass)動態生成handler

近日項目需要根據配置文件對頁面進行動態生成。由於在tornado中,url映射需要傳入class,故使用元類進行類的動態生成。
代碼如下

import tornado.web
  
class baseHandler(tornado.web.RequestHandler):
    def render_method(self,page):
        self.render(page)

class AHandler(baseHandler):
    def get(self):
        self.render_method('page.html')

def get(self):
    self.write('hello from get')

def get_class(name):
    return type(name,(baseHandler,),{'get':get})

a=get_class('ssss')

urls=[
        ('/b',AHandler),
        ('/a',a),
        ]

if __name__ == "__main__":
    application = tornado.web.Application(urls)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

注:此功能也可以使用一個handler捕獲所有的url,之後在handler中對url做判斷和功能實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章