码迷,mamicode.com
首页 > 其他好文 > 详细

Tornado

时间:2016-10-28 19:50:26      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:world   oct   客户   inf   框架   key   tar   静态   style   

Tornado

Tornado是使用Python编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。

windows安装

c:\> pip install tornado

实例:

创建一个.py文件

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

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

技术分享

第一步:执行脚本,监听 8888 端口

第二步:浏览器客户端访问 /index  -->  http://127.0.0.1:8888/index

第三步:服务器接受请求,并交由对应的类处理该请求

第四步:类接受到请求之后,根据请求方式(post / get / delete ...)的不同调用并执行相应的方法

第五步:方法返回值的字符串内容发送浏览器

路由系统

路由系统其实就是 url 和 类 的对应关系,这里不同于其他框架,其他很多框架均是 url 对应 函数,Tornado中每个url对应的是一个类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python
# -*- coding:utf-8 -*-
  
import tornado.ioloop
import tornado.web
  
  
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
  
class StoryHandler(tornado.web.RequestHandler):
    def get(self, story_id):
        self.write("You requested the story " + story_id)
  
class BuyHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("buy.wupeiqi.com/index")
  
application = tornado.web.Application([
    (r"/index", MainHandler),
    (r"/story/([0-9]+)", StoryHandler),
])
  
application.add_handlers(‘buy.wupeiqi.com$‘, [
    (r‘/index‘,BuyHandler),
])
  
if __name__ == "__main__":
    application.listen(80)
    tornado.ioloop.IOLoop.instance().start()

 

配置模板,静态路径

目录:

技术分享

代码:

app.py
=============
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import tornado.ioloop
import tornado.web
from controller.home import MainHandler

settings = {
	‘template_path‘: ‘views‘,
	‘static_path‘: ‘static‘,
}
application = tornado.web.Application([
	(r"/index", MainHandler),
], **settings)


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


index.html
===========
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>asdfsadf</h1>
    <form action="/index" method="POST">
        <input type="text" name="user" />
        <input type="text" name="pwd" />
        <input type="submit" value="提交" />
    </form>
    <!--<img src="/static/1.jpg">-->
    <hr/>
    <ul>
    {% for item in user_info_list%}
        <li>{{item.get(‘u‘, "123")}}-{{item[‘p‘]}}</li>
    {% end %}
    </ul>
</body>
</html>


home.py
============
import tornado.web
user_info = []
class MainHandler(tornado.web.RequestHandler):
	def get(self):
		# self.write("Hello, world") # HttpResponse

		self.render(‘index.html‘, user_info_list = user_info)

	def post(self, *args, **kwargs):
		# self.write(‘post‘)
		# self.render(‘index.html‘)
		# 获取用户提交的数据
		user = self.get_argument(‘user‘)
		pwd = self.get_argument(‘pwd‘)
		user_info.append({‘u‘: user, ‘p‘: pwd})
		self.redirect(‘/index‘)

访问:

技术分享

 

Tornado

标签:world   oct   客户   inf   框架   key   tar   静态   style   

原文地址:http://www.cnblogs.com/Z-style/p/6008986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!