您的位置:首页 > 其它

tornado开发学习之1.HelloWorld和它加强版版本

2013-04-01 08:33 316 查看

1. 本来web.py是一直在使用的,由于要搭建本站的原因,开始了tornado的学习。tornado是大名鼎鼎的,不用我来多说,以此篇开张来记录我学习tornado的过程

2. 先来介绍一下我的软件环境

activepython 2.7

pypm install tornado

pypm install python-mysql

pypm install memcached

pypm install markdown

pypm install dbutils

pypm install mako

代码编辑器使用的是pycharm2.5

3. 一个标准的helloworld

从tornado的文档上都可以找到,我简单来解释一下各个部分的作用。


对于地址映射,使用Handlers数组来定义,每个元素是元组,特别注意的是结尾的,号

对于处理地址的类,都是继承与tornado.web.RequestHandler这个基类

下面声明appication,然后指定监听端口

再由著名的IOLoop启动消息循环

代码

import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
Handlers=[
(r"/", MainHandler),
]
application = tornado.web.Application(Handlers)
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()


4.下面让我们来简单加强一下

为什么加强,加强什么?在这个例子很简单演示了tornado的运行基本机制后,你会发现,你每次访问http://127.0.0.1:8888/都会得到HelloWorld,满足了么?看看运行环境的控制台,你会得到一串儿的



哦,它还想要个站点图标,我们要让helloworld不要有缺憾,改写一下一上的HellorWorld

import os
import tornado.ioloop
import tornado.web
def read(name):
f = None
try:
file="%s/%s"%(os.path.dirname(__file__),name)
f = open(file, 'rb')
return f.read()
except:
return ''
finally:
if f: f.close()
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
class ImgHandler(tornado.web.RequestHandler):
def get(self):
ico=read("favicon.ico")
self.write(ico)
Handlers=[
(r"/", MainHandler),
(r"/favicon.ico", ImgHandler),#增加了图标地址的处理
]
application = tornado.web.Application(Handlers)

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()


5. 简单解释一下上面的代码

我们增加了一个read函数,用来读取文件,很好理解,就是以二进制只读模式来读取文件

我们在地址映射时当系统想访问/favicon.ico时,交给ImgHandler处理

ImgHandler的作用就是把存放在与helloworld同级目录下的favicon.ico使用read函数读取出来然后回写给浏览器,相当于直接给浏览器一个图标文件(估计有人会说,你不知道有静态目录么?对不起,目前我只知道helloworld)

OK,让我们来看看加强版本的tornado的helloworld吧。怎么样漂亮吧。控制台也没有WARNING了。



【原创转载】http://www.youliaoo.com/post/12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: