首先介绍一下Tornado的
主要模块
:
- web:FriendFeed使用的Web框架,实现了Tornado的大多数重要功能;
- escape:对XHTML,JSON,URL编码解码的一些方法;
- database:对MySQLdb的一个简单封装;
- template:基于Python的web模板系统;
- httpclient:被设计用于同web和httpserver协同工作的非阻塞式HTTP客户端;
- auth:第三方认证的实现;
- locale:一套本地化,翻译机制;
- options:针对服务器环境的命令行,配置文件解析工具;
- httpserver:服务于web模块的非常简单的HTTP服务器的实现;
- iostream:对非阻塞式的常用socket读写的简单封装;
- ioloop:核心的I/O循环;
- s3server:一个web服务器,实现了Amazon S3的大部分接口,依靠本地文件存储实现。
一个Tornado的Web应用会将一组URL映射到tornado.web.RequestHandler的子类上去,子类中定义了get()和post()方法用以处理不同的HTTP请求。
下面代码将根目录/映射到MainHandler,将一个URL模式/story/([0-9]+)映射到StoryHandler.
使用get_argument()方法获取发送过来的参数:
下面代码将根目录/映射到MainHandler,将一个URL模式/story/([0-9]+)映射到StoryHandler.
- class MainHandler(tornado.web.RequestHandler):
- def get(self):
- self.write("You request the main page")
- class StoryHandler(tornado.web.RequestHandler):
- def get(self,story_id):
- self.write("You requested the story " + story_id)
- application = tornado.web.Application([(r"/",MainHandler),(r"/story/([0-9]+)",StoryHandler),])
使用get_argument()方法获取发送过来的参数:
- class MainHandler(tornado.web.RequestHandler):
- def get(self):
- self.write('<html><body><form action="/" method="post">'
- '<input type="text" name="message">'
- '<input type="submit" value="Submit">'
- '</form></body></html>')
- def post(self):
- self.set_header("Content-Type","text/plain")
- self.write("You wrote "+ self.get_argument("message"))