近日項目需要根據配置文件對頁面進行動態生成。由於在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做判斷和功能實現。