1. 基本路由配置
在 Tornado 中,通过 Application 类的构造函数或 add_handlers 方法配置路由。下面是一个简单的例子:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado!")
class OtherHandler(tornado.web.RequestHandler):
def get(self):
self.write("This is another handler!")
def make_app():
return tornado.web.Application([
(r'/', MainHandler),
(r'/other', OtherHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
print("Server is running at http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
在上述例子中,make_app 函数创建了一个应用实例,其中包含两个路由规则:'/' 映射到 MainHandler 处理器,'/other' 映射到 OtherHandler 处理器。
2. 正则表达式匹配
Tornado 的路由规则支持正则表达式匹配,允许更灵活的路由配置。例如:
class RegexHandler(tornado.web.RequestHandler):
def get(self, value):
self.write(f"Received value: {value}")
def make_app():
return tornado.web.Application([
(r'/path/(\w+)', RegexHandler),
])
在上述例子中,r'/path/(\w+)' 中的 (\w+) 是一个正则表达式捕获组,匹配任意字母数字字符。请求 /path/some_value 时,将调用 RegexHandler 处理器,并将匹配到的值传递给 get 方法。
3. 参数传递
你可以在路由规则中通过元组传递额外的参数,这些参数会被传递给相应的处理器:
class ParameterHandler(tornado.web.RequestHandler):
def get(self, parameter):
self.write(f"Received parameter: {parameter}")
def make_app():
return tornado.web.Application([
(r'/with_parameter/([^/]+)', ParameterHandler, dict(extra_param="additional")),
])
在上述例子中,dict(extra_param="additional") 将额外的参数传递给 ParameterHandler 处理器。当请求 /with_parameter/value 时,ParameterHandler 的 get 方法将接收到参数值和额外的参数。
这些基本的路由配置方式可以满足大多数应用的需求。如果你的应用需要更复杂的路由配置,可以参考 Tornado 文档中关于路由的更多高级配置选项。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7426/Tornado