博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tornado框架的初步使用
阅读量:5876 次
发布时间:2019-06-19

本文共 2491 字,大约阅读时间需要 8 分钟。

hot3.png

Tornado的搭建很简单,使用pip,或者下载源码均可。

 

我们先看一个最简单的程序:

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):    def get(self):        self.write("

Hello World

")application = tornado.web.Application([(r"/", MainHandler),])if __name__ == '__main__': application.listen(8888) tornado.ioloop.IOLoop.instance().start()

我们运行这个程序,打开浏览器输入:

http://localhost:8888/

就可以看到加粗的helloworld。

 

那么这段代码到底什么意思:

我们先看

class MainHandler(tornado.web.RequestHandler):    def get(self):        self.write("Hello, world")

这里定义了一个处理器,里面定义个一个get方法,对应Http协议中的GET请求。

然后是:

application = tornado.web.Application([    (r"/", MainHandler),])

这里的含义是:如果用户输入的路径是“/”,也就是根路径,那么将使用我们刚才编写的MainHandler,如果该请求使用的GET,那么调用MainHandler的get方法,如果是POST请求,则去调用MainHandler中的post方法。

 

所以我们输入上面的网址,tornado调用了MainHandler中的get方法,返回"<h1>Hello World<h1>"

 

我们再看一个稍微复杂的程序:

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):    def get(self):        self.write("

This is Home Page!

")class StoryHandler(tornado.web.RequestHandler): def get(self, story_id): self.write("You request the story

" + story_id + "

")application = tornado.web.Application([ (r"/", MainHandler), (r"/story/([0-9]+)", StoryHandler), ])if __name__ == '__main__': application.listen(8888) tornado.ioloop.IOLoop.instance().start()

上面代码的含义是:

对于/根目录,使用MainHandler,处理GET请求。

对于/story/99这种,使用StoryHandler,处理GET请求。

下面看一个更加复杂的程序:

import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler):    def get(self):        self.write("

This is Home Page!

")class StoryHandler(tornado.web.RequestHandler): def get(self, story_id): self.write("You request the story

" + story_id + "

")class MessageHandler(tornado.web.RequestHandler): def get(self): self.write(''' Please Input Message
''' ) def post(self): #self.set_header("Content-Type", "text/plain") self.write("You wrote

" + self.get_argument("message") + "

")application = tornado.web.Application([ (r"/", MainHandler), (r"/story/([0-9]+)", StoryHandler), (r"/message", MessageHandler), ])if __name__ == '__main__': application.listen(8888) tornado.ioloop.IOLoop.instance().start()
这里,输入/message这个URL,使用的是MessageHandler,调用其中的get方法,返回一段HTML代码,其中含有一个表单,提交后, 仍使用/message,但是此时采用POST请求提交。后端Tornado收到这段数据,采用MessageHandler的post方法,处理这段文本,将其回显给用户。

转载于:https://my.oschina.net/inevermore/blog/388683

你可能感兴趣的文章
socket
查看>>
Highcharts使用表格数据绘制图表
查看>>
Thinkphp5笔记三:创建基类
查看>>
hdu5373
查看>>
4.单链表的创建和建立
查看>>
Android 好看的搜索界面,大赞Animation
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
上班族的坐姿
查看>>
ubuntu 12.04 下面安装vmware workstation 8.0.4
查看>>
[原创]FineUI秘密花园(二十三) — 树控件概述
查看>>
【Java学习笔记】如何写一个简单的Web Service
查看>>
如何解决This system is not registered with RHN.
查看>>
Cocos2d-x学习笔记(两)Cocos2d-x总体框架
查看>>
拆解探索MagSafe电源接口结构和指示灯变颜色原理
查看>>
Android中EditText,Button等控件的设置
查看>>
lintcode:Remove Nth Node From End of Lis 删除链表中倒数第n个节点
查看>>
POJ 1915-Knight Moves (单向BFS &amp;&amp; 双向BFS 比)
查看>>
linux编译安装LAMP
查看>>
php中的continue用法
查看>>
Android小游戏应用---撕破美女衣服游戏
查看>>