一、从 hello, world 开始
如果你的 python 环境还没有安装 tornado,请直接使用 pip 安装:
pip install tornado
下面的代码,虽然只有区区六行(不包括导入模块的两行),却是一个完整的 web 服务程序。运行下面的代码,就开启了一个 web 服务,从本机浏览器直接访问 http://127.0.0.1,不出意外的话,我们的第一个网页 hello, world 即可正常显示出来。
demo.py
# -*- coding: utf-8 -*- import tornado.ioloop import tornado.web class HomeHandler(tornado.web.RequestHandler): def get(self): # 响应以get方式发送的请求 self.write("hello, world") # 向请求者(浏览器)应答hello, world app = tornado.web.Application([ (r"/", HomeHandler), ]) # URL映射 app.listen(80) # 绑定侦听端口 tornado.ioloop.IOLoop.instance().start() # 启动服务
如果多少了解一点 http 协议,知道 get / post 方法,相信你一定能够读懂。也许你的项目规划了很多的url,也许你的服务需要监听非80端口,没有关系,在这个代码上扩展就行。仅仅六行!!!请让我们向犀利的、简洁的、无所不能的 python 致敬!
划重点:tornado.web.RequestHandler.write() 不只可以接受字符串参数,还可以接受列表或字典参数——如果应答类型为json时,这个重载特性非常高效。
二、最简单的登录
假定我们有这样一个 web 服务需求:
(1)首页:地址“/”,显示“点此登录”两个汉字,点击则跳转到登录页面;
(2)登录页:地址“/login”,以 get 方式访问,则显示账号、密码输入框和登录按钮;以 post 方式访问,则是提交表单提交,验证登录信息。登录成功,跳转至个人信息页面,否则,跳转至首页;
(3)个人信息页:地址“/me”,显示登录账号。
以上面的代码为基础,我们首先要做的工作是 URL 和 对应的处理类之间的关联。这件工作实际上是非常轻松愉快的:
app = tornado.web.Application([ (r"/", HomeHandler), (r"/login", LoginHandler), (r"/me", MeHandler) ])
接下来,我们要实现 HomeHandler、LoginHandler 和 MeHandler 这三个类了。通常,我们习惯把这些和URL 对应的处理类,保存为一个独立的文件,比如文件名为 handlers.py,然后在服务器脚本 demo.py 中导入它们。
handlers.py
# -*- coding: utf-8 -*- import tornado.web class HomeHandler(tornado.web.RequestHandler): """响应主页请求""" def get(self): # 以get方式请求 self.write("""nbsp;html>点此登录""") class LoginHandler(tornado.web.RequestHandler): """响应登录页请求""" def get(self): # 以get方式请求 self.write( """ nbsp;html>""" ) def post(self): # 以post方式请求(本例为提交表单) account = self.get_argument('account', None) passwd = self.get_argument('passwd', None) if account == 'xufive' and passwd == 'dgdgwstd': self.redirect('/me?name=%s'
您可能感兴趣的文章:
参与评论
手机查看
返回顶部