近日项目需要根据配置文件对页面进行动态生成。由于在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做判断和功能实现。