外观
路由
在上方代码中,于12行处配置了一个默认路由“/”,链接到MainHandler,由它的get()方法处理get请求。我们注意到,在handlers关键字参数中传递了一个列表作为参数。它实际上就是配置路由的参数。我们可以在这里面指定更多路由,如下。
tornado.web.Application(handlers=[
('/', MainHandler), # 首页路由
('/login', LoginHandler), # 登录路由
('/register', RegisterHandler) # 注册路由
])Application()还接受如下参数。
tornado.web.Application(handlers=None, default_host=None, transforms=None, **setting)handlers参数以一个列表为参数,列表中的元素为一个二元组。第一个元素为一个正则表达式,tornado会根据路由匹配的正则表达式寻找对应的处理程序。第二个元素为一个RequestHandler类,它里面的get和post等方法就是处理对应请求的程序。第一个正则表达式不会匹配查询字符串和锚点。Tornado把这些正则表达式看作已经包含了行开始和结束的锚点(即如“/”的路由实际上为“^/%”)。
import tornado.ioloop # 主事件循环模块
import tornado.web # Web框架模块
class LoginHandler(tornado.web.RequestHandler):
def get(self):
self.write('<h1>登录页面</h1>')
class MainHandler(tornado.web.RequestHandler):
"""GET请求"""
def get(self):
self.write('<h1>首页</h1>') # 输出字符串
def make_app():
"""创建Tornado应用"""
return tornado.web.Application([
(r'/', MainHandler),
(r'/login', LoginHandler)
]) # 设置路由
if __name__ == '__main__':
app = make_app() # 创建Tornado应用
app.listen(8888) # 设置监听端口
print('在端口8888上运行Tornado程序') # 输出提示信息
tornado.ioloop.IOLoop.current().start() # 启动服务